знание лучшей аутентификации с помощью Passport / JwtStrategy - PullRequest
0 голосов
/ 26 апреля 2018

На одном рабочем проекте я скачал с интернета ...

В одном месте кода у меня есть следующее:

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?

1 Ответ

0 голосов
/ 26 апреля 2018
  1. Отлично. В обоих случаях undefined будет возвращено в любом случае.
  2. Промежуточное программное обеспечение выполняется в том порядке, в котором они определены. Таким образом, requireAuth всегда выполняется сначала, а затем function(req, res){}. Но если по какой-либо причине произойдет сбой requireAuth, в стеке промежуточного ПО будет пропущен function(req, res){}. Любые ошибки должны обрабатываться в промежуточном программном обеспечении . Если вы не обработаете их, произойдет сбой всего приложения.
...