首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AngularJs - $httpProvider.interceptors multiple responseError

AngularJs - $httpProvider.interceptors multiple responseError
EN

Stack Overflow用户
提问于 2016-04-08 17:28:29
回答 1查看 431关注 0票数 0

我有401错误的responseError处理程序。HTTP拦截器将在模态用户中请求对HTTP请求进行身份验证并继续重试。但问题是,如果我有多个失败的请求拦截器显示我不止一个模式,我需要认证几次。在第一个请求中通过身份验证之后,如何重试所有HTTP请求?

代码语言:javascript
运行
复制
$httpProvider.interceptors.push(function($q, $injector, Auth) {
    return {
        responseError: function(rejection) {
            if (rejection.status === 401) {

                return Auth.authenticate().then(function() {
                    return $injector.get('$http')(rejection.config);
                });                    
            }

            return $q.reject(rejection);
        }
    };
});

.factory('Auth', function($injector) {
return {
    authenticate: function() {
        var $uibModal = $injector.get('$uibModal');

        var modal = $uibModal.open({
            templateUrl: '/authenticateModal.html',
            controller: 'AuthenticateModalController',
        });

        return modal.result.then(function() {
            // success
        });
    }
}
});  



.controller('AuthenticateModalController', function ($scope, $uibModalInstance, $http, Auth) { 
$scope.submit = function() {        
    Auth.login({
          'email': $scope.email,
          'password': $scope.password
    }).then(function successCallback(response) {
        $uibModalInstance.close();
    }, function errorCallback(response) {
        console.log('error');
    });
};
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-08 22:03:06

如果您只希望对您的Auth工厂进行多个调用,那么您应该定义它,以便每次都可以访问相同的模态实例:

代码语言:javascript
运行
复制
.factory('Auth', function($injector) {
    var $uibModal = $injector.get('$uibModal');
    var modal
    return {
        authenticate: function() {
            if (!modal) {
                modal = $uibModal.open({
                    templateUrl: '/authenticateModal.html',
                    controller: 'AuthenticateModalController',
                });
            }

            return modal.result.then(function() {
                // success
            });
        }
    }
}); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36505810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档