访问ExpressJs上的当前用户-Passport
我正在使用expressJs和passportjs(本地策略)创建一个后端应用程序来保护一些路由。 我需要在每个数据库查询中添加当前用户的信息,以便我们只向每个用户公开相关信息。 我知道您可以访问当前用户检查req.user的信息,但这将涉及将用户信息(甚至请求)作为参数传递到我的所有调用堆栈中,我发现这有点不方便 是否需要获取最后一层(准备sql语句的那一层)的用户信息,而无需将其添加到参数中访问ExpressJs上的当前用户-Passport,express,passport.js,Express,Passport.js,我正在使用expressJs和passportjs(本地策略)创建一个后端应用程序来保护一些路由。 我需要在每个数据库查询中添加当前用户的信息,以便我们只向每个用户公开相关信息。 我知道您可以访问当前用户检查req.user的信息,但这将涉及将用户信息(甚至请求)作为参数传递到我的所有调用堆栈中,我发现这有点不方便 是否需要获取最后一层(准备sql语句的那一层)的用户信息,而无需将其添加到参数中 谢谢。为什么不通过id获取最后一层的用户信息呢?由于您使用的是passport local,您可以通
谢谢。为什么不通过
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
});
您可以通过自定义数据将用户对象作为第二个参数传递到passport的
done
函数,如下所示:
done(null, {id: 1, name: 'John'});
而
req.user
将返回{id:1,name:'John'}
谢谢您的回答。这样,我仍然需要传入userId来查询数据库。我试图避免在所有方法中添加额外的参数。