角度Cookie过期后如何将用户重定向到登录页面?但是我使用过angualrJS和ngCookies cookies将在一分钟后到期,如下所示
$cookiesProvider.defaults.expires = new Date(now.setMinutes(now.getMinutes() + 1));`
我应该使用$ watch功能,如下所示:
$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 :(得分: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上,请在服务器端执行重定向。
答案 1 :(得分:0)
你应该使用ui-router模块。
注入你的代码$ state并在if。
中添加这一行if (newVal != oldval) {
$rootScope.$broadcast(AuthStatus.session_timeout);
$state.go('login');
//console.log(newVal, oldval);
}
在你的main.js中导入模块ui-router并定义上面的状态togheter与应该遵循的路径。
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'login.html',
controller: 'loginCtrl'
})
.state('somethingElse', {
url: '/somethingElse',
templateUrl: 'somethingElse.html',
controller: 'somethingElseCtrl'
});
$urlRouterProvider.otherwise('/somethingElse');