2016-11-04 43 views
0

由於loopback.getCurrentContext()長期生活的不穩定性問題,目前已過時,我怎麼能確保當用戶通過API端點執行某些操作,我知道如何辨別他呢?如何更好地獲得環回當前用戶ID

可能是我可以請求負載發送的令牌標識和檢查呢?如果用戶假冒它呢? Github上的問題頁面中的那些hacky解決方案有哪些替代方案?

回答

0

退房https://docs.strongloop.com/display/public/LB/Making+authenticated+requests

總之,一旦你登錄其用戶應該給你回一個的accessToken的響應。 然後,您可以使用在標題或查詢字符串,以證明你是一個登錄的用戶:

# Authorization Header 
curl -X GET -H "Authorization: $ACCESS_TOKEN" \ 
http://localhost:3000/api/widgets 

# Query Parameter 
curl -X GET http://localhost:3000/api/widgets?access_token=$ACCESS_TOKEN 

這不容易被僞造,因爲訪問令牌對每個請求檢查,以確保它的當前並且有效。

一旦你做到了這一點,你可以在通過的accessToken獲得(來自https://github.com/strongloop/loopback/issues/569#issuecomment-60924099採取除連接用戶的REQ對象)

app.use(function(req, res, next) { 
    app.currentUser = null; 
    if (!req.accessToken) return next(); 
    req.accessToken.user(function(err, user) { 
    if (err) return next(err); 
    req.currentUser = user; 
    next(); 
    }); 
}); 

添加到您的server.js或啓動腳本,因此有user對象ctx.req.currentUser在任何點。

+0

是否有可能獲得ctx.req對象在操作鉤子? – Asaf

+0

不,不容易。我沒有做到這一點,我已經走了。讓用戶進入Operation Hooks是目前我遇到的最大環回問題。對於正在研究的問題有一個突出的問題,但在短期內不會期望任何事情。抱歉。 – JonRed

+0

謝謝你的回答。將當前用戶保存在數據庫中的某些所有者屬性中的最佳方法是什麼? – Asaf