我正在使用$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
页面,同时在我之前的标签中,我的应用程序正在登录。为什么会这样?本地存储是否与标签无关?
答案 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