2017-01-13 28 views
1

我已阅读过Loopback3文档getCurrentContext()已被弃用。我想要做的是获取访问令牌并使用它在db中查找关联的用户,以便我可以获取该用户所属的company_id并更改查询以将其包含在where子句中。我正在使用MySQL和一个自定义的UserAccount模型,它是从用户扩展而来的。Loopback3 - 通过访问令牌查找当前用户

我是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()); 

任何想法?这是错误的方法?

SOLUTION

按卡迈勒的评论如下...

尝试设置 “环回#令牌”:{}在middleware.json下的 “初始:之前”

这种填充REQ .accessToken

回答

5

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

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

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

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

感谢您的回复,但正如所述req.accessToken始终未定义,所以没有userId属性。我猜为了让accessToken存在,有一些特殊的事情要做?你有没有一个适用于你的例子的中间件的例子? – TimL

+0

尝试设置'''“loopback#token”:{}''''''''''''''''''''''''''''''' – kamal0808

+0

谢谢你,这个伎俩! – TimL

相关问题