我在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
答案 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
}
});