javascript - 无法推送拦截器

标签 javascript angularjs angularjs-service angularjs-routing

在 Angular js 中,我创建了一个服务,该服务应该对用户进行身份验证,它存储一个 token 并随每个请求发送它,所以我使用了拦截器。 她是拦截器的代码。

app.factory('authInterceptorService',['$q', '$location', '$cookieStore', function( $q, $location, $cookieStore){
     var authInterceptorServiceFactory = {};
     var _request = function(config){
         config.headers = config.headers || {};
         var authData = $cookieStore.get('AuthorizationHeader');
         if(authData){
             config.headers.AuthorizationHeade = authData.token;
         }
         return config;
     }

     var _responseError = function(rejection) {
         if(rejection.status === 401){
             $location.path('/');
         }
         return $q.reject(rejection);
     }
     authInterceptorServiceFactory.request = _request;
     authInterceptorServiceFactory.responseError = _responseError;
     return authInterceptorServiceFactory;
}]);

问题是当我尝试添加拦截器时

app.config(function ($httpProvider) {
    $httpProvider.interceptors.push('authInterceptorService');
});

我收到 Uncaught TypeError:无法从 AccApp 读取未定义的属性“push”

最佳答案

您提到的错误消息表明$httpProvider参数可能未正确注入(inject)。也许您使用某种混淆来更改变量名称并破坏注入(inject)机制。 请尝试更改:

app.config(function ($httpProvider) { ... }); 

进入:

app.config(["$httpProvider", function ($httpProvider) { ... }]);

请告诉我这是否可以解决问题。

编辑

经过评论中的简短讨论,该错误似乎是由太旧的 AngularJS 版本引起的。为了使用 interceptors 集合,至少需要 1.1.4 版本,根据此链接:AngularJS $httpProvider undefined .

编辑二

升级 angularjs 版本后问题解决了,但是又出现了一个问题,看来你自己解决了:)。按照约定,我正在将有关它的信息添加到答案中。 根据我们的讨论,升级 AngularJS 版本后必须包含 ngRoute,尽管在​​ 1.0.7 版本中代码无需包含它即可工作。

关于javascript - 无法推送拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24541630/

相关文章:

ruby-on-rails - 设计提供陈旧 token 的 token 身份验证

javascript - 当从函数求值时 $watch 似乎不起作用

javascript - 对 ng-class 应用不同的表达式

javascript - Angular 1 的服务 promise

javascript - Kendo Grid 删除所有列

javascript - window.print() 在 IE 11 中不起作用

php - 如何在 jQuery 代码中转义 "["字符

javascript - 如何处理错误: ngModel:datefmt Model is not a date object

javascript - Timepicker 只显示几次

javascript - JS - 检查数组是否没有任何值但有指定值