使用Angular.js拦截器捕获HTTP 401
我想使用Angular.js" title="Angular.js">Angular.js在单页Web应用程序上实现身份验证。在官方文档角建议使用拦截器:
$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) { return {
// ...
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}
};
});
问题是当服务器发送401错误时,浏览器立即停止显示“未经授权”消息或登录弹出窗口(服务器发送身份验证HTTP标头时),但是Angular无法使用其拦截器捕获HTTP根据建议处理错误。我误会了吗?我尝试了更多在Web上找到的示例(例如this,this和this),但是没有一个起作用。
回答:
在应用程序配置块中:
var interceptor = ['$rootScope', '$q', "Base64", function(scope, $q, Base64) { function success(response) {
return response;
}
function error(response) {
var status = response.status;
if (status == 401) {
//AuthFactory.clearUser();
window.location = "/account/login?redirectUrl=" + Base64.encode(document.URL);
return;
}
// otherwise
return $q.reject(response);
}
return function(promise) {
return promise.then(success, error);
}
}];
以上是 使用Angular.js拦截器捕获HTTP 401 的全部内容, 来源链接: utcz.com/qa/406324.html