如何使用AngularJS覆盖标头令牌

时间:2018-07-24 03:31:51

标签: angularjs

我有问题要用AngularJS覆盖标头令牌,因为已经用AuthInterceptor设置了。

app.factory('authInterceptor', function ($rootScope, $q, $window) {
 return {
   request: function (config) {

   config.headers = config.headers || {};
   if (localStorage.getItem("token")!=='') {
     config.headers.Authorization = 'Bearer ' + localStorage.getItem("token");
   }
   return config;
 },
};
});

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

我会在使用另一个令牌的情况下访问另一个第三方URL,但是总是失败,因为令牌返回到localStorage中的当前令牌。我已经使用过TransformRequest,但也没有用,什么是解决问题的最佳实践?

1 个答案:

答案 0 :(得分:0)

您可以检查拦截的请求中的URL是否是您要传递授权令牌的URL。例如,如果您自己的API的URL始终以https://api.myapp.com开头,则可以这样操作:

app.factory('authInterceptor', function ($rootScope, $q, $window) {

    var urlForAuthorization = 'https://api.myapp.com';

    return {
        request: function (config) {
            config.headers = config.headers || {};

            if (config.url.startsWith(urlForAuthorization) 
                && localStorage.getItem("token") !== '') {
                config.headers.Authorization = 'Bearer ' + localStorage.getItem("token");
            }

            return config;
        }
    };
});