Я использую эту паспортную стратегию.
passport.use(
'onlyForRefreshToken',
new JWTStrategy(
{
jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
secretOrKey: jwtSecretRider,
},
(jwtPayload, done) => {
if (jwtPayload) {
return done(null, jwtPayload);
}
return done(null, false);
},
),
);
Моя цель — поместить «jwtPayload» в мой остальной API Nodejs, который находится в другой папке. То есть я хочу использовать jwtPayload, декодированный в приведенном ниже коде.
exports.riderRefreshToken = async (req, res) => {
const { email } = req.body;
const exRiderRefreshToken = await Rider.findOne({ email });
}
И этот маршрутизатор работает через промежуточное ПО jwtstrategy.
router.post(
'/refreshToken',
passport.authenticate('onlyForRefreshToken', { session: false }),
authenticationCtrl.riderRefreshToken,
);
В заключение, когда JWT без проблем перейдет от jwtstrategy, этот почтовый маршрутизатор будет работать.
И я хочу использовать jwtPayload, который находится в jwtstrategy, в Nodejs API как req.params или req.body.
Не могли бы вы помочь мне с этой проблемой?





Вам нужно обернуть свою стратегию в функцию, которая получает req и res :
const isAuthenticated: RequestHandler = (req, res, next) => {
passport.authenticate(
'jwt',
{ session: false, failWithError: true },
(error, user) => {
if (error) {
return next(error)
}
//HERE PUT USER WHERE YOU WANT
//req.data or req.user or req.userInfo
req.user = user
return next()
}
)(req, res, next)
}
Я не рекомендую помещать пользователя в req.params или req.body, так как это может привести к путанице позже (потому что технически это не происходит от них).