frontend上に角度のあるJS SDKを使用してループバックJSアプリケーションを作成しています。私は現在のコンテキストにアクセストークンがあるかどうかを確認するモデルのためのfindリモートメソッドをアフターフックしています。ユーザーがログインしていてもループバックはaccessTokenが未定義です
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を取得することです。これは私がログインしているにもかかわらず起こります、そして、もし私が再びリクエストを送ったら、魔法のようにトークンが再び現れ、許可が与えられます。
このエラーが発生するたびに複製する方法がわかりません。私はセッションが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
コードの訂正ありがとう:) –