0

トークンによる認証システムがあります。ユーザーが電子メールとパスワードでログインすると、トークンが返されて Cookie に保存されます。ユーザーがブラウザーまたはタブを閉じてサイトに戻ると、ユーザーは Cookie 内のトークンで認証されますが、これにはかなりの数ミリ秒かかる可能性があり、ユーザー プロファイルなどの安全なサイトに戻ると、であり、アプリが最初のユーザー データを読み込んでログイン済みとしてマークするのに十分な速度ではない場合、ユーザーはログイン ページにリダイレクトされます。

私の最初のアイデアは、トークンが有効なすべてのリクエストのレスポンスにユーザー データを入れることでしたが、それでは不要なデータ トラフィックが大量に発生します。

より良い解決策はありますか?

4

1 に答える 1

0

ユーザー情報が読み込まれるまで待機するには、ルートで解決を使用します。したがって、ログイン ページにリダイレクトするか、ルート アクセスを許可するかは、ロード ユーザー ハンドラのハンドラによって異なります。例えば:

function requiresLogin(){
return ["$auth",function($auth){
return $auth.verifiedUser();
}];
}

$routeProvider.when("...",{
....,
resolve:{
user:requiresLogin()
}
});

$auth サービスで:

angular.module("app").factory("$auth", ["$q", "$http", function($q,$http){
var loaded, loggedIn = false;

//load user 
loaded = $http.get(....).then(function(result){
loggedIn = result.loggedIn;
});

return {
verifiedUser:function(){
return loaded.then(function(){
    if(loggedIn)
return true;
else
return $q.reject();
});
}
};
}]);

テストされていないコードです。これを行う方法についてのアイデアを提供するためだけです。

より多くのコードがなければ、明確な答えを提供することはできません。

于 2014-03-29T16:13:49.220 に答える