gpt4 book ai didi

node.js - 我可以在express.js req对象中传递JWT解码数据吗?

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

我正在尝试找到一种解决方案,可以在验证 JWT 的路由上进行中间件检查。由于此验证会对其进行解码并进行验证,因此我想将解码后的数据传递到路由,而无需再次解码。请参阅下面我当前的解决方案:

  //route.js
app.get("/donations", helpers.protected, (req, res) => {
console.log(req.user)
});





//helper.js
module.exports.protected = (req, res, next) => {
const jwt_token = req.cookies["auth"];

jwt.verify(jwt_token, nconf.get("jwt:secret"), (err, decoded) => {
if (err || !decoded) {
logErr(error.INVALID_JWT, err, req);
return res.redirect("/");
} else {
req.user = decoded;
return next();
}
});
};

目标是通过将验证逻辑放在中间函数中来保持路由中的代码简单和干净。我希望能够避免解码两次,但又要安全。我可以使用 req.user =已解码吗?正如我上面所示? req.user 是否可以被修改或放入来自客户端的 HTTP 请求中?会使用 res.locals.user =已解码;使用起来更好还是更差?

谢谢

最佳答案

是的,您将解码传递到req

但是

我会避免将解码设置为req.user,因为req.user与 session 用户相关。只需使用 req.decoded 或其他东西即可。仅当您需要将对象全局设置为您正在使用的渲染引擎时,才需要使用 res.locals

关于node.js - 我可以在express.js req对象中传递JWT解码数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51049988/

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