如何在Header Angular JS中传递授权令牌

时间:2017-07-11 07:32:38

标签: angularjs authorization

在我的控制器中,我试图调用我的API,但我无法传递Autherization令牌。

我创建了一个config var并在其中传递了我的令牌但得到了以下响应:

900902Missing Credentials需要未提供的OAuth凭据。确保您的API调用调用有一个标题:“授权:Bearer ACCESS_TOKEN”

** JS Code **

 app.controller("AuthenticationController", function($scope, API_URL, vcRecaptchaService, $http) {

       var config = {
         headers: {
           'Authorization': 'Bearer 00000-e5673-346756f-8676-f7567561a'
         }
       };
       $scope.verifyRecaptcha = function() {

         if (vcRecaptchaService.getResponse() === "") {
           alert("User did not resolve the recaptcha")
         } else {
           var post_data = {
             'g-recaptcha-response': vcRecaptchaService.getResponse()
           }
           $http.post('https:1.1.1.1/abc/vdc/verify', config, post_data).success(function(response) {

               if (response.success === true) {
                 alert("Successfully resolved the recaptcha.");
               } else {
                 alert("User verification failed");
               }
             })
             .error(function(error) {
               alert("Error Occured while resolving recaptcha.");
               console.log(error);
             })
         }
       }

2 个答案:

答案 0 :(得分:2)

我认为你已经切换了有效载荷和标题的位置

应该是 http.post(url, data, config)代替http.post(url, config, data)

链接到doc

我建议将所有逻辑放在一个http拦截器中,这样auth头文件就会附加到每个请求中。

答案 1 :(得分:0)

要在标题中传递authorization,请在角度模块中添加$httpProvider

以下function作为工厂:

function authInterceptor($localStorage) {

        return {
            request: function (config) {
                config.headers = config.headers || {};
                if ($localStorage.token) {
                    config.headers.Authorization = 'Bearer' + 
                    $localStorage.token;
                }
                return config;
            },
        };

    }

call您的模块中的这个工厂。因此,它会自动在您的所有$http请求中添加授权标头。而且您不需要在每个请求中添加授权标头。