На одном рабочем проекте я скачал с интернета ...
В одном месте кода у меня есть следующее:
passport.use(new JwtStrategy({
secretOrKey: credentials.secret,
jwtFromRequest: ExtractJwt.fromAuthHeader(),
},
function(payload, done) {
User.findById(
payload._id,
function(err, user) {
if (err) {
return done(err, false);
}
if (user) {
return done(null, user);
} else {
return done(null, false);
}
}
);
}
));
В другом месте кода у меня есть следующее:
var requireAuth = passport.authenticate('jwt', { session: false });
//...
module.exports = function(app) {
//...
authRoutes.get('/protected', requireAuth, function(req, res) {
res.send({ content: 'Success' });
});
//...
}
У меня есть 2 вопроса здесь:
1- А что, если вместо этого делать: return done(err, false);
мы делаем: done(err, false);
без return
?
2- Является ли третий аргумент (эта функция промежуточного программного обеспечения) при вызове: authRoutes.get(*, *, *)
всегда достигнутым независимо от того, что происходит внутри функции: function(payload, done){}
(второй аргумент включен: new JwtStrategy(*, *)
Заметьте, что функция промежуточного программного обеспечения (этот третий аргумент) возвращает ответ Success
. А что, если что-то пойдет не так в процессе аутентификации JWT
?