Angularjs $window.sessionStorage值不可在同一窗口的其他选项卡中访问?
我使用Angularjs $window.sessionStorage值不可在同一窗口的其他选项卡中访问?,angularjs,session,local-storage,Angularjs,Session,Local Storage,我使用$window.sessionStorage.isLoggedIn变量处理登录的angularjs,如下所示 $routeProvider .when('/', { templateUrl: 'app/components/main/dashboard.html', controller: 'dashboardController', resolve: { loggedI
$window.sessionStorage.isLoggedIn
变量处理登录的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');
}
}
};
})
正常情况下,它工作正常,但当我在同一浏览器的新选项卡中打开web应用时,$window.sessionStorage.isLoggedIn
的值将被取消定义,并重定向到登录
页面,同时在我的上一个选项卡中,我的应用以登录状态工作。为什么会这样?本地存储与选项卡无关?会话存储的值在选项卡之间不存在。您可以使用localStorage
来执行此操作
localStorage
的一个缺点是不能为其设置过期日期。因此,在某些情况下,使用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');
}]);