Я использую Passport для аутентификации, в частности, с помощью стратегии JWT. Однако я могу создать новый токен, когда пользователь создан, когда я использую этот токен в заголовке запроса маршрута, который требует аутентификации, мой запрос просто зависает. Я использую Postman для тестирования этих запросов POST/GET.Passport.authenticate не отправляет ответ
Вот моя первоначальная конфигурация для подписавшись пользователя:
const User = require('../db/models/User');
const jwt = require('jsonwebtoken');
function userToken(user) {
return jwt.sign({
id: user.id,
}, process.env.JWT_SECRET);
}
exports.signup = function(req, res, next) {
const email = req.body.email.toLowerCase();
const password = req.body.password.toLowerCase();
User.findOne({
where: { email },
}).then(function(user) {
if (!user) {
User.create({
email,
password,
})
.then(function(user) {
return res.send({ token: userToken(user) });
});
}
if (user) {
return res.send({ message: 'That user is in use' });
}
});
};
Вот моя конфигурация паспорта:
const passport = require('passport');
const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const User = require('../db/models/User');
const jwtOptions = {
jwtFromRequest: ExtractJwt.fromHeader('authorization'),
secretOrKey: process.env.JWT_SECRET,
};
const jwtLogin = new JwtStrategy(jwtOptions, function(payload, done) {
User.findOne({
where: { id: payload.id },
}, function(err, user) {
if (err) { return done(err, false); }
if (user) { return done(null, user); }
return done(null, false);
});
});
passport.use(jwtLogin);
Вот что выглядит мой защищенный маршрут как:
const passport = require('passport');
const requireAuth = passport.authenticate('jwt', { session: false });
module.exports = function router(app) {
app.get('/', requireAuth, function(req, res) {
res.send({ 'hi': 'there' });
});
};
Вот что я вижу в моем терминале:
Executing (default): SELECT "id", "username", "email", "password", "photo", "createdAt", "updatedAt" FROM "users" AS "user" WHERE "user"."id" = 15;
Так что я знаю, что это правильно запрос для идентификатора пользователя и ищет его, однако, он просто вешает на данный момент, а не служить мне ответ.
Не уверен, в чем проблема, поэтому любые предложения приветствуются и оцениваются. Спасибо!