我正在使用expressJs和passportjs(本地策略)创建后端应用程序以保护某些路由。我需要在每个数据库查询中添加当前用户的信息,以便我们只向每个用户公开相关信息。我知道您可以通过检查req.user访问当前用户的信息,但那将涉及将用户信息(甚至请求)作为参数通过我的调用堆栈传递,我觉得有点不方便。是否有方法在最后一层(准备SQL语句的层)获取用户信息而无需将其添加到参数中呢?谢谢。
为什么不通过 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
});
done
函数,如下所示:done(null, {id: 1, name: 'John'});
并且req.user
将会返回{id: 1, name: 'John'}