gpt4 book ai didi

node.js - 如何将Passport解码后的jwtPayload数据传递给nodejs API

转载 作者:太空宇宙 更新时间:2023-11-03 23:57:36 25 4
gpt4 key购买 nike

我正在使用此护照策略。

  passport.use(
'onlyForRefreshToken',
new JWTStrategy(
{
jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
secretOrKey: jwtSecretRider,

},
(jwtPayload, done) => {

if (jwtPayload) {
return done(null, jwtPayload);
}
return done(null, false);
},
),
);

我的目标是将“jwtPayload”放入位于其他文件夹的 Nodejs 的其余 API 中。
也就是说,我想使用在下面的代码中解码的 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 顺利通过时,Post 路由器就可以工作。
我想将 jwtstrategy 中的 jwtPayload 用作 Nodejs API 作为 req.params 或 req.body。

你能帮我解决这个问题吗?

最佳答案

您需要将策略包装到一个获取 reqres 的函数中:

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.paramsreq.body 中,因为稍后可能会造成困惑(因为从技术上讲,它不是来自那些)。

关于node.js - 如何将Passport解码后的jwtPayload数据传递给nodejs API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56390470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com