使用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

回到顶部