我需要拦截每个Ajax请求以验证服务器是否以401 Unauthorized
响应,因为会话已过期并重定向到登录页面,因此用户不认为该应用程序停止工作。我可以使用JQuery以下方式执行此操作:
$( document ).ajaxComplete(function( event, xhr, settings ) {
if(xhr.errorCode == 401 || xhr.responseText === "unauthorized") {
location.href = "/Login";
}
});
如何使用Angular JS执行此操作?
答案 0 :(得分:2)
您可以在应用程序config()
上设置$ interceptor .config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(['$location', '$q', function($location, $q) {
return {
'request': function(request) {
return request;
},
'responseError': function(response) {
if (response.status === 401) {
// do stuff
}
// otherwise, default behaviour
return $q.reject(response);
}
};
}]);
}])
答案 1 :(得分:0)
使用httpInterceptor
。很久以前的问题是answered。然后,您应该对'response'
hanndler感兴趣并在那里添加您的特定逻辑。
答案 2 :(得分:-1)
制作一个用于拨打所有电话的功能,您只需要在一个地方处理错误而不是很多
function makeCall(obj, cb) {
$http({
method: obj.method,
url: obj.url,
data: obj.data || {}
}, function(res) {
// non error statuses get handled here
}, function(res) {
// error statuses get handled here
})
}