我正在尝试捕获401发生的事件(过期令牌),因此我可以发送请求以使用新令牌重新授权用户。我的问题是当响应为401时未达到响应代码:
angular.module('app')
.factory('authInterceptor',
function ($rootScope, $q, $window) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
console.log('not 401');
}
return config;
},
response: function (response) {
console.log(response.status);
if (response.status === 401) {
// handle the case where the user is not authenticated
console.log('401 !!!!!!!');
}
return response || $q.when(response);
}
};
});
其他人通过不包括WWW-Authenticate
标题解决了这个问题,我尝试了这个并且仍未调用响应函数。我正在考虑使用另一个状态代码解决问题,但我不愿意。
答案 0 :(得分:1)
当响应为401时,这是一个错误(所有4x都是错误)。
您应该使用属性responseError
来检查。
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}
检查$http
文档https://docs.angularjs.org/api/ng/service/ $ http