AngularJS登录拦截程序崩溃chrome
除了登录页面,我的网站到处都使用AngularJS和UI路由器。为了在会话到期时将用户重定向到登录页面,我有以下拦截器AngularJS登录拦截程序崩溃chrome,angularjs,angular-ui-router,Angularjs,Angular Ui Router,除了登录页面,我的网站到处都使用AngularJS和UI路由器。为了在会话到期时将用户重定向到登录页面,我有以下拦截器 angular.module('myApp').factory('authInterceptor', ['$q', function ($q) { return { 'request': function (config) { return config || $q.when(config); },
angular.module('myApp').factory('authInterceptor', ['$q', function ($q) {
return {
'request': function (config) {
return config || $q.when(config);
},
'response': function (response) {
if (response.status === 401) {
window.location.href = "App/Signin";
return $q.reject(response);
} else {
return response || $q.when(response);
}
},
'responseError': function (rejection) {
if (rejection.status === 401) {
window.location.href = "App/Signin";
}
return $q.reject(rejection);
}
};
}]);
有时,该代码会导致Chrome陷入重定向循环并崩溃。单击“重新加载”按钮可解决此问题。我怀疑UI路由器正在捕获到登录页面的重定向,并试图将状态设置回默认状态。是否有一种方法可以重定向到登录页面而不受UI路由器的干扰?重定向到登录页面会启动另一个重定向递归,从而导致循环 请添加以下内容以匹配您的场景
if (response.status === 401 && $location.path() != 'App/Signin')
要使其干净,请使用$state服务,例如:
$state.go('login-signin-state')
登录页面不使用AngularJS和UI路由器,并且与我的单页应用程序分开,这就是为什么我使用window.location.href而不是$state.go().Hoo OK@user1,它修复了吗?没有-我仍然在Chrome中看到相同的崩溃。控制台中没有错误,但我看到了Chrome aw快照页面,如图所示。单击“重新加载”选项通常会解决此问题。刷新时,您会看到发送的重复请求,这是什么?我们也遇到了完全相同的问题。但这只发生在一些机器上。我们的大多数用户都没有出现问题,但有些用户每次都会出现问题,但他们可以在崩溃后刷新并恢复正常。找到答案了吗?