Express Loopback3-通过访问令牌查找当前用户
我在Loopback3文档中读到getCurrentContext已被弃用。我想做的是获取访问令牌并使用它在db中查找关联的用户,这样我就可以获得用户所属的公司id,并修改查询以将其包含在where子句中。我使用的是MySQL和一个自定义的UserAccount模型,它是从User扩展而来的 我是个新手,所以很难弄清楚这一点,尤其是大多数在线帮助似乎都指向getCurrentContext 我已经设置了一些中间件来在解析阶段运行: middleware.json modifyrequest.js 但是,req.accessToken始终未定义。我在server.js中添加了:Express Loopback3-通过访问令牌查找当前用户,express,loopbackjs,Express,Loopbackjs,我在Loopback3文档中读到getCurrentContext已被弃用。我想做的是获取访问令牌并使用它在db中查找关联的用户,这样我就可以获得用户所属的公司id,并修改查询以将其包含在where子句中。我使用的是MySQL和一个自定义的UserAccount模型,它是从User扩展而来的 我是个新手,所以很难弄清楚这一点,尤其是大多数在线帮助似乎都指向getCurrentContext 我已经设置了一些中间件来在解析阶段运行: middleware.json modifyrequest.js
app.use(loopback.token());
有什么想法吗?这是错误的方法吗
解决方案
根据卡马尔在下面的评论
尝试在middleware.json的initial:before下设置loopbacktoken:{}
这将填充req.accessToken首先,尝试在middleware.json的initial:before下设置loopbacktoken:{}
然后,如果您正在从请求对象访问accessToken,则可以在该accessToken对象中找到用户ID。尝试登录req.accessToken,您将在其中找到用户ID
您可以使用该用户id在数据库中搜索相应的用户
User.findById(req.accessToken.userId, function(err, user){
if(err) {
//handle error
}
else {
//access user object here
}
});
首先,尝试在middleware.json的initial:before下设置loopbacktoken:{}
然后,如果您正在从请求对象访问accessToken,则可以在该accessToken对象中找到用户ID。尝试登录req.accessToken,您将在其中找到用户ID
您可以使用该用户id在数据库中搜索相应的用户
User.findById(req.accessToken.userId, function(err, user){
if(err) {
//handle error
}
else {
//access user object here
}
});
感谢您的回复,但是如前所述,req.accessToken始终未定义,因此没有userId属性。我猜为了accessToken的存在,有一些特殊的事情要做?您是否有一个与您的示例一起工作的中间件示例?请尝试在middleware.json的initial:before下设置loopbacktoken:{}。是否有关于此lloopbacktoken的文档?这正是我所需要的,我花了很长时间才找到。@OtisWright这是loopback.token的一部分。谢谢你的回复,但是,正如所述,req.accessToken总是未定义的,因此没有userId属性。我猜为了accessToken的存在,有一些特殊的事情要做?您是否有一个与您的示例一起工作的中间件示例?请尝试在middleware.json的initial:before下设置loopbacktoken:{}。是否有关于此lloopbacktoken的文档?这正是我所需要的,我花了很长时间才找到。@otiswight这是loopback.token的一部分
User.findById(req.accessToken.userId, function(err, user){
if(err) {
//handle error
}
else {
//access user object here
}
});