Установка сеанса аутентификации паспорта на false не работает при использовании пользовательских обратных вызовов для функции Passport.authenticate. Для контекста я использую express, graphql и паспорт для аутентификации пользователя. Поскольку я использую jwts, я не вижу необходимости использовать сессию, поэтому я установил для него значение false. Тем не менее, паспорт все еще обновляет таблицу сеансов проверенного пользователя.
passport.authenticate(
'jwt',
{ session: false },
async (err, user, info) => {
if (user) {
req.user = user;
// if successful token is valid
// make sure that the token lives inside the token database and is valid.
const tokenValid = await db
.select('id', 'user_id')
.table('tokens')
.where({
id: user.jti,
user_id: user.id,
});
if (tokenValid.length !== 1) {
console.log('Token not found in DB');
return res.status(401).send({
message: 'jwt not found',
});
}
} else if (
info.name === 'TokenExpiredError' ||
info.name === 'JsonWebTokenError'
) {
console.log('Token Error');
return res.status(401).send({
message: info.message,
});
} else if (err) {
return res.status(400).send({
message: 'passport error',
});
}
next();
},
)(req, res, next);