我正在使用前端的角JS SDK開發環回JS應用程序。我有一個模型的查找遠程方法的後鉤,它驗證當前上下文是否有訪問令牌。即使用戶登錄,Loopback也會拋出accessToken undefined
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未經授權,因爲回送得到一個未定義的訪問令牌。即使我已經登錄,也會發生這種情況,如果我再次發送請求,令牌會奇蹟般地再現並授予權限。
我不知道如何複製每次這個錯誤。我只知道它發生(有時),如果我離開會話iddle 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);
});
};
我不明白的是爲什麼它有時會發生,有時不會發生。任何人都可以幫助我發現錯誤?
這與你的問題沒有關係,但是在'if(at == undefined || at == null){'你只需要檢查undefined *或* null,而不是兩個,因爲等寬鬆算法。 – gcampbell
好的。感謝您對代碼的更正:) –