处理401对整个应用程序

处理401对整个应用程序

本文介绍了Angularjs - 处理401对整个应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的控制器之一以下code处理401优雅:

  ChannelsService.query(功能(响应){
    $ scope.channels =响应;
},功能(错误){
    如果(error.status == 401){
        $ state.go('登录');
    }});

和我相应的服务

  myServices.factory('ChannelsService',函数($资源){
    返回$资源('/通道',{},{
        查询:{方法:GET,IsArray的:真正},
        创建:{方法:POST}
    })
});

我想知道如何处理401的全局,使我没有这个逻辑工作到每个控制器。难道我需要和一个拦截器如果是的话可能会有人分享一些code?

感谢


解决方案

You can add an interceptor to the $httpProvider when configuring your application

app.config(['$httpProvider', function($httpProvider) {

    $httpProvider.interceptors.push(function($q) {

        return {

            'responseError': function(rejection){

                var defer = $q.defer();

                if(rejection.status == 401){
                    console.dir(rejection);
                }

                defer.reject(rejection);

                return defer.promise;

            }
        };
    });

}]);

As the name already suggests, this will intercept each request and call the provided function if there is a responseError (You could add interceptors for succeeded requests, too)

For further information, see the $http docs

这篇关于Angularjs - 处理401对整个应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-01 19:19