Я создаю приложение, используя узел, экспресс и паспорт. Для аутентификации я использую JWT, который сохраняется в черном списке после выхода из системы. Когда я пытаюсь добавить код в мою стратегию JWTS, чтобы проверить базу данных на наличие токена, она не будет работать. Вот код:
Если я возвращаю токен в (1) месте, то он работает, но если я возвращаю его из (2) места (после проверки его по базе данных), то он говорит, что я не авторизован. Я проверил, чтобы они оба возвращали один и тот же токен, поэтому это так странно, что я не буду работать с обоих мест ...
Может кто-нибудь объяснить это?
const cookieExtractor = function(req) {
let token = null;
if (req && req.cookies)
{
token = req.cookies['jwt'];
}
return token; (1)
models.blacklist
.findOne({ where: { token: token }})
.then(function(blacklistToken) {
if (blacklistToken) {
console.log('null');
return null;
} else {
return token; (2)
}
});
};
passport.use(new JwtStrategy({
jwtFromRequest: cookieExtractor,
secretOrKey: config.keys.secret
}, async(payload, done) => {
try {
models.user.findById(payload.userId)
.then(function(user) {
if (!user) {
return done(null, false);
}
done(null, user);
})
} catch (error) {
done(error, false)
}
}));