Express Loopback3-通过访问令牌查找当前用户

Express Loopback3-通过访问令牌查找当前用户,express,loopbackjs,Express,Loopbackjs,我在Loopback3文档中读到getCurrentContext已被弃用。我想做的是获取访问令牌并使用它在db中查找关联的用户,这样我就可以获得用户所属的公司id,并修改查询以将其包含在where子句中。我使用的是MySQL和一个自定义的UserAccount模型,它是从User扩展而来的 我是个新手,所以很难弄清楚这一点,尤其是大多数在线帮助似乎都指向getCurrentContext 我已经设置了一些中间件来在解析阶段运行: middleware.json modifyrequest.js

我在Loopback3文档中读到getCurrentContext已被弃用。我想做的是获取访问令牌并使用它在db中查找关联的用户,这样我就可以获得用户所属的公司id,并修改查询以将其包含在where子句中。我使用的是MySQL和一个自定义的UserAccount模型,它是从User扩展而来的

我是个新手,所以很难弄清楚这一点,尤其是大多数在线帮助似乎都指向getCurrentContext

我已经设置了一些中间件来在解析阶段运行:

middleware.json

modifyrequest.js

但是,req.accessToken始终未定义。我在server.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
  }
});