由於loopback.getCurrentContext()
長期生活的不穩定性問題,目前已過時,我怎麼能確保當用戶通過API端點執行某些操作,我知道如何辨別他呢?如何更好地獲得環回當前用戶ID
可能是我可以請求負載發送的令牌標識和檢查呢?如果用戶假冒它呢? Github上的問題頁面中的那些hacky解決方案有哪些替代方案?
由於loopback.getCurrentContext()
長期生活的不穩定性問題,目前已過時,我怎麼能確保當用戶通過API端點執行某些操作,我知道如何辨別他呢?如何更好地獲得環回當前用戶ID
可能是我可以請求負載發送的令牌標識和檢查呢?如果用戶假冒它呢? Github上的問題頁面中的那些hacky解決方案有哪些替代方案?
退房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
在任何點。
是否有可能獲得ctx.req對象在操作鉤子? – Asaf
不,不容易。我沒有做到這一點,我已經走了。讓用戶進入Operation Hooks是目前我遇到的最大環回問題。對於正在研究的問題有一個突出的問題,但在短期內不會期望任何事情。抱歉。 – JonRed
謝謝你的回答。將當前用戶保存在數據庫中的某些所有者屬性中的最佳方法是什麼? – Asaf