$ window.sessionStorage值不能在同一窗口的其他标签中加入?

时间:2015-05-23 12:50:17

标签: angularjs session local-storage

我正在使用$window.sessionStorage.isLoggedIn变量来处理logged in中的angularjs,如下所示,

$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');
                    }
                }
            };
        })

通常它工作正常,但是当我在同一浏览器的新标签页中打开我的网络应用时,$window.sessionStorage.isLoggedIn的值将不定义并重定向到login页面,同时在我之前的标签中,我的应用程序正在登录。为什么会这样?本地存储是否与标签无关?

1 个答案:

答案 0 :(得分:1)

sessionStorage的值不会在标签之间保留。您可以使用localStorage来执行此操作。

localStorage的弱点是您无法为其设置过期日期。所以在某些情况下,使用cookie是存储数据的最佳解决方案。

所以,我更喜欢使用$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