2015-05-23 30 views
1

我使用$window.sessionStorage.isLoggedIn變量爲angularjs處理logged in如下,

$routeProvider 
     .when('/', { 
      templateUrl: 'app/components/main/dashboard.html', 
      controller: 'dashboardController', 
      resolve: { 
       loggedIn: function ($location, $window) { 
        console.info($window.sessionStorage.isLoggedIn) 
        if (!$window.sessionStorage.isLoggedIn) { 
         $location.path('/login'); 
        } 
       } 
      }; 
     }) 

通常它工作正常,但是當我在同一個瀏覽器中打開我的web應用程序在新標籤頁中,$window.sessionStorage.isLoggedIn值將是不確定的並重定向到login頁面,同時在我之前的選項卡中,我的應用程序正在以登錄狀態工作。爲什麼會發生?本地存儲與標籤無關?

回答

1

sessionStorage的值不會在選項卡之間持續存在。你可以使用localStorage來做到這一點。

localStorage的缺點是您無法爲其設置過期日期。所以在某些情況下,使用cookies是存儲數據的最佳解決方案。

所以,我更喜歡使用$cookies

angular.module('cookiesExample', ['ngCookies']) 
.controller('ExampleController', ['$cookies', function($cookies) { 
    // Retrieving a cookie 
    var favoriteCookie = $cookies.get('myFavorite'); 
    // Setting a cookie 
    $cookies.put('myFavorite', 'oatmeal'); 
}]); 

要了解更多有關的localStorage和sessionStorage的簽出此鏈接:HTML5 Local storage vs. Session storage

相關問題