Я пытаюсь создать API, где пользователь может зарегистрироваться по электронной почте или войти в систему с помощью Google, я использую веб-токен JSON для аутентификации и oauth20, проблема в том, могу ли я передать JWT с OAUT?
Я попытался передать его, и я получаю токен, если я консольный журнал, но как я передаю его пользователю, как я могу каким-то образом прикрепить его к объекту req.user в cb с помощью oauth или что-то подобное?
Я делаю это в стратегии Google:
async (accessToken, refreshToken, params, profile, cb) => {
const userCheck = await User.findOne({ googleId: profile.id });
if (userCheck) {
const payload = {
user: {
id: userCheck.id
}
};
jwtToken.sign(
payload,
config.get("jwtSecret"),
{ expiresIn: 360000 },
(err, token) => {
if (err) {
throw err;
}
// console.log(token);
return res.json({ token });
},
cb(null, userCheck)
);
Мои маршруты защищены следующим образом:
router.get("/", auth, async (req, res)=>{
...some code
}
где auth - функция промежуточного уровня
Это функция промежуточного программного обеспечения Auth:
module.exports = function (req, res, next) {
const token = req.header("x-auth-token");
// If no token found
if (!token)
{
return res.status(401).json({ msg: "User not authorized" });
}
// Set token to user
try {
const decoded = jwtToken.verify(token, config.get("jwtSecret"));
req.user = decoded.user;
}
catch (err)
{
res.
status(401)
.json({ msg: "User not authenticated, please login or sign up" });
}
next();
};