2016-07-28 128 views
0

如何在角度cookie過期後將用戶重定向到登錄頁面?但是我用angualrJS和ngCookies 餅乾將1分鐘爲以下在cookies到期後重定向到登錄頁面angularJS

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

後過期難道我應該用戶$手錶功能如下:

$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路由器模塊。

注入你的代碼$ state,並在你的if中添加這一行。

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

main.js導入模塊UI路由器,並與應遵循的路線togheter定義上述狀態。

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

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

我想這是一個身份驗證cookie。所以,最好檢查一下你使用cookie的過期時間。因性能而濫用觀察者並不是一個好主意。

你可以做,使用攔截器,例如:

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,執行服務器端重定向。