Я использую стратегию passport jwt
и вот мой фрагмент кода:
'use strict';
const config = require('../config');
const User = require('../models/user.model');
const passportJWT = require('passport-jwt');
const ExtractJwt = passportJWT.ExtractJwt;
const JwtStrategy = passportJWT.Strategy;
const jwtOptions = {
secretOrKey: config.secret,
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken()
};
const jwtStrategy = new JwtStrategy(jwtOptions, (jwtPayload, done) => {
console.log(jwtPayload);
User.findById(jwtPayload.sub, (err, user) => {
if (err) return done(err, null);
if (user) {
return done(null, user)
} else {
return done(null, false)
}
})
});
exports.jwtOptions = jwtOptions;
exports.jwt = jwtStrategy;
здесь я устанавливаю стратегию, и все работает правильно. Теперь я хочу создать конечную точку, чтобы добавить статью с UserId, извлеченным из токена (статья имеет строку userId в своей схеме).
Как я могу получить userId из токена? В new JwtStrategy
это уже происходит, потому что у меня есть полезная нагрузка, которая позволяет мне findById
и, следовательно, аутентифицировать вызов, но я должен каким-то образом повторно использовать этот файл или создать новый с именем, например, getUserId?