2016-07-28 5 views
0

角度付きクッキーが期限切れになった後にログインページにリダイレクトする方法はありますか?angularJSでクッキーが期限切れになった後にログインページにリダイレクト

$rootScope.$watchCollection($cookies.getObject('user'), function (newVal, oldval) { 

     if (newVal != oldval) { 
      $rootScope.$broadcast(AuthStatus.session_timeout); 
      //console.log(newVal, oldval); 
     } else { 
      //console.log(newVal, oldval); 
     }` 
+0

質問を編集/投稿する前にhttp://stackoverflow.com/help/formattingをご覧ください –

答えて

0

あなたはUI-ルータモジュールを使用する必要があります。しかし、私は、次の

$cookiesProvider.defaults.expires = new Date(now.setMinutes(now.getMinutes() + 1));` 

は以下の通り私べきユーザーの$ウォッチ機能をアムよう クッキーは、1分後に期限切れになりますangualrJSとngCookiesを使用しました。

あなたのコード$ stateに挿入してifの中にこの行を追加してください。

if (newVal != oldval) { 
    $rootScope.$broadcast(AuthStatus.session_timeout); 
    $state.go('login'); 
    //console.log(newVal, oldval); 
} 

あなたのmain.jsでモジュールui-routerをインポートし、上記の状態を次の経路で定義します。

$stateProvider 
.state('login', { 
    url: '/login', 
    templateUrl: 'login.html', 
    controller: 'loginCtrl' 
}) 
.state('somethingElse', { 
    url: '/somethingElse', 
    templateUrl: 'somethingElse.html', 
    controller: 'somethingElseCtrl' 
}); 

$urlRouterProvider.otherwise('/somethingElse'); 
1

私はそれが認証クッキーだと思います。したがって、クッキーを使用するときに有効期限を確認する方がよいでしょう。パフォーマンスのためにウォッチャーを悪用することは良い考えではありません。

angular.module('myModule') 
.config(function($httpProvider) { 
    $httpProvider.interceptors.push('CookieInterceptor') 
}) 
.factory('CookieInterceptor', function() { 
    return { 
      'request': function(config) { 
       // check if your cookie has expired and 
       // $window.location.href = '/login' 
      } 
    } 
}); 

SPA上にない場合は、サーバー側のリダイレクトを実行します。

あなたが例えばインターセプタを、使用していることを行うことができます。

関連する問題