![](/img/trans.png)
[英]Loopback extending User model throws TypeError: Cannot convert undefined or null to object
[英]Loopback throws accessToken undefined even though a user is logged in
我正在使用前端角度JS SDK的環回JS應用程序。 我在模型的find遠程方法上有一個掛鈎,用於驗證當前上下文中是否存在訪問令牌。
Team.afterRemote('find',function(context,boards,next){
var ExeboardUser = app.models.ExeboardUser;
var ExeboardUserBoard = app.models.ExeboardUserBoard;
var ctx = loopback.getCurrentContext();
var at = ctx.get('accessToken');
if(at==undefined || at==null){
// return 401
console.log("Unauthorized: Find Boards-User not logged in.");
var newError = new Error("Unauthorized: Find Boards");
newError.status = 401;
next(newError);
}
else{
//.. more verifications and operations on the data
}
});
此驗證效果很好....有時候。 我遇到的問題是隨機時間我得到401 Unauthorized,因為loopback得到了一個未定義的訪問令牌。 即使我已登錄,也會發生這種情況,如果我再次發送請求,則令牌會神奇地重新出現並授予權限。
我不知道每次出現此錯誤時如何復制。 我知道如果我離開會話謎語5-10分鍾,或者如果我對前端進行更改並且我刷新,則會發生(有時)。
在angularJS上,我在控制器的開始處調用端點。 這意味着我會在用戶輸入具有控制器的URL時立即發出請求。
var getTeam = function(){
Team.find({filter:{where:{ id:$stateParams.id }}})
.$promise
.then(function(response){
$log.log("SUCCESS",response);
},
function(err){
$log.log(err);
});
};
我無法理解的是為什么它有時發生,有時不發生。 任何人都可以幫我發現錯誤嗎?
您應該在模型上使用以下ACL,而不是遠程鈎子:
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$unauthenticated",
"permission": "DENY",
"property": "find"
}
你能檢查一下嗎?
server.js
文件中令牌和上下文中間件的順序。 我有這個訂單:
app.use(loopback.context()); app.use(loopback.token());
檢入控制台以了解存儲的訪問令牌, localStorage
或sessionStorage
。 關閉瀏覽器選項卡后會刪除sessionStorage
。
我還不能使用評論功能,因為我的聲譽還不到50 :)。 道歉,如果這看起來更像評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.