После входа в систему я использую следующий метод перед разрешением безопасных маршрутов:
// \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 выполняет логику ивозвращает сообщение в веб-интерфейс, и как мне это сделать?