Легкая реализация Passport аутентификации со стратегией JWT на REST API? - PullRequest
0 голосов
/ 26 февраля 2019

После входа в систему я использую следующий метод перед разрешением безопасных маршрутов:

// \config\passport.js
passport.use(
'jwt',
new JWTstrategy(opts, (jwt_payload, done) => {
    try {
        User.findOne({
            where: {
                username: jwt_payload.id,
            },
        }).then(user => {
            if (user) {
                done(null, user);
            } else {
                done(null, false);
            }
        });
    } catch (err) {
        done(err);
    }
})
);

Пример безопасного маршрута:

// \routes\getItem.js
const passport = require('passport');

module.exports = app => {
app.get('/getItem', (req, res, next) => {
    passport.authenticate('jwt', { session:false }, (err, user, info) => {
        if(err) {
        }
        if(info !== undefined) {
            res.send(info.message);
        } else {
            //code logic here
            res.status(200).send({
                message: 'added item',
            });
        }
    })(req, res, next);
});
}

Есть ли способ не повторять те же 10строки кода:

passport.authenticate(.... if, if else...)

Но вместо того, чтобы создать где-нибудь функцию и просто проверить, что она возвращает (логическое значение), и в случае ее ложного значения эта функция возвращает сообщение в веб-интерфейс, если true, api выполняет логику ивозвращает сообщение в веб-интерфейс, и как мне это сделать?

...