Loopback3 - 按访问令牌

时间:2017-01-13 16:57:53

标签: express loopbackjs

我在Loopback3文档中读到了不推荐使用getCurrentContext()的内容。我想要做的是获取访问令牌并使用它来查找数据库中的关联用户,这样我就可以获得用户所属的company_id并更改查询以将其包含在where子句中。我正在使用MySQL和自定义UserAccount模型,该模型从User扩展。

我是Loopback的新手,所以很难解决这个问题,因为大多数在线帮助似乎都指向getCurrentContext();.

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

middleware.json

"parse": {
    "./modifyrequest": {
      "enabled": true   
    }
  }

modifyrequest.js

var loopback = require('loopback');

module.exports = function(app) {
  return function tracker(req, res, next) {
    console.log('Middleware triggered on %s', req.url);
      console.log('-------------------------------------------------------------------');
    console.log(req.accessToken);
}
};

但是req.accessToken总是未定义的。我已经添加到server.js:

app.use(loopback.token());

有什么想法吗?这是错误的做法吗?

根据Kamal在下面的评论......

尝试在“initial:before”下的middleware.json中设置“loopback#token”:{}

这会填充req.accessToken

1 个答案:

答案 0 :(得分:5)

首先,尝试在"loopback#token": {}下的middleware.json设置"initial:before"

然后,如果从请求对象访问accessToken,则可以在该accessToken对象中找到userId。尝试记录req.accessToken,您会在其中找到userId。

您可以使用该用户ID搜索数据库中的相应用户。

User.findById(req.accessToken.userId, function(err, user){
  if(err) {
    //handle error
  }
  else {
    //access user object here
  }
});