ExpressJs - Passport 如何访问当前用户?

3
我正在使用expressJs和passportjs(本地策略)创建后端应用程序以保护某些路由。我需要在每个数据库查询中添加当前用户的信息,以便我们只向每个用户公开相关信息。我知道您可以通过检查req.user访问当前用户的信息,但那将涉及将用户信息(甚至请求)作为参数通过我的调用堆栈传递,我觉得有点不方便。是否有方法在最后一层(准备SQL语句的层)获取用户信息而无需将其添加到参数中呢?谢谢。
2个回答

2

为什么不通过 id 获取用户信息呢?由于您正在使用 passport-local,因此可以通过访问 req.user.id 在最后一个数据库查询中按 id 查询用户。不需要任何参数。

 router.post('/your/route', function(req, res) {
   User.findOne({
     where: {id: req.user.id}
   }).then(function(user) {
   // do something
    });
 //send response
 });

谢谢你的回答。这样我仍然需要传入userId来查询数据库。我试图避免在所有方法中添加额外的参数。 - Sole

2
您可以将用户对象作为自定义数据作为第二个参数传递给passport的done函数,如下所示:
done(null, {id: 1, name: 'John'});

并且req.user将会返回{id: 1, name: 'John'}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接