Пример использования в виде промежуточного обработчика (можно и без passport.js)
export const token = ({ required, roles } = {}) => (req, res, next) =>
passport.authenticate('token', { session: false }, (err, user, info) => {
if (err || (required && !user) || (required && !~roles.indexOf(user.role))) {
return res.status(401).end();
}
req.logIn(user, { session: false }, (err) => {
if (err) return res.status(401).end();
asyncRedisClient.set(user.id, '1', 'EX', 900000); // 900000 = 15 минутам
next();
});
})(req, res, next);
Пример использования
router.get('/',
token({ required: true, roles: ['admin'] }),
someepichandler);