AngularJS中的拦截器

时间:2015-09-05 16:35:38

标签: angularjs rest authentication token

我为REST应用程序设置标题时遇到了一些麻烦。 我需要将授权令牌设置为授权标头,实际上我使用此代码:

app.factory('sessionInjector', ['$log','$rootScope', function($log, $rootScope) {  
    var sessionInjector = {
        request: function(config) {

                $log.debug($rootScope.accesstoken);

                angular.forEach($rootScope.accesstoken, function(value, key) {
                    if(key=='access_token'){
                        $log.debug(value);
                        config.headers['Authorization'] = "Bearer " + value;
                    }
                });

            return config;
        }
    };
    return sessionInjector;
}]);


app.config(['$httpProvider', function ($httpProvider) {
    $httpProvider.interceptors.push('sessionInjector');
}]);
forEach中的

值具有正确的令牌值。

遗憾的是仍然没有获得资源......

执行日志语句,我在请求中看不到标题。 Image with headers 第一个请求标头用于获取令牌,并且它工作正常,但是对第二个请求等资源的请求不会发送适当的标头。 对于CURL,这有效:

curl -H "Authorization: Bearer 5314f45f-0ad0-4f3c-92c0-429c8075eea4" http://localhost:8080/categories/

2 个答案:

答案 0 :(得分:0)

可能应该像这样设置标题,而不是将其设置为每个传出请求:

$httpProvider.defaults.headers.common['Authorization'] = "Bearer " + value;

答案 1 :(得分:0)

在痛苦的一天之后,我发现当我在IE上执行网站时,实现的拦截器正在工作......但为什么呢?为什么我无法在Chrome或Firefox下设置标头?我尝试使用Himanshu的方法和AJAX语法设置带拦截器的头文件,为什么它们都不能在这些浏览器上工作?