2017-01-13 59 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

相關問題