首页 > 解决方案 > 如何使用 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,但总是失败,因为 Token 回到了localStorage. 我使用TransformRequest过,但也没有工作,解决问题的最佳做法是什么?

标签: angularjs

解决方案


您可以检查截获的请求中的 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;
        }
    };
});

推荐阅读