angularjs - 如何使用 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
过,但也没有工作,解决问题的最佳做法是什么?
解决方案
您可以检查截获的请求中的 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;
}
};
});