gpt4 book ai didi

AngularJS $http.interceptors.push 未捕获错误 : [$injector:unpr]

转载 作者:行者123 更新时间:2023-12-02 22:35:47 25 4
gpt4 key购买 nike

我试图在登录成功后将访问 token 设置为 header 。我试图通过使用拦截器来实现它,但收到此错误:

Uncaught Error: [$injector:unpr] Unknown provider: aProvider <- a <- TokenInterceptor <- $http <- $compile

JS

myApp.config(['$httpProvider',function ($httpProvider) {
$httpProvider.interceptors.push('TokenInterceptor');
}]);

myApp.factory('TokenInterceptor', function ($q, $window, $location, AuthenticationService) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.sessionStorage.token) {
config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;
}
return config;
},

requestError: function(rejection) {
return $q.reject(rejection);
},

response: function (response) {
return response || $q.when(response);
},

//Revoke client authentication if 401 is received

responseError: function(rejection) {
console.log("Rejecton !");
console.log(rejection);

if (rejection != null && rejection.status === 401 && ($window.sessionStorage.token || AuthenticationService.isLogged)) {
console.log("Revoked !");
delete $window.sessionStorage.token;
AuthenticationService.isLogged = false;
$location.path("/admin/login");
}

return $q.reject(rejection);
}
};
});

最佳答案

yApp.config(['$httpProvider', function ($httpProvider) {

var interceptor = ['$q', '$window', '$location', '$injector', function($q, $window, $location, $injector) {

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

requestError: function(rejection) {
return $q.reject(rejection);
},

response: function (response) {
return response || $q.when(response);
},

// Revoke client authentication if 401 is received

responseError: function(rejection) {
console.log(rejection);
// Dynamically get the service since they can't be injected into config
var AuthenticationService = $injector.get('AuthenticationService');

if (rejection != null && rejection.status === 401 && ($window.sessionStorage.token || AuthenticationService.isLogged)) {
delete $window.sessionStorage.token;
AuthenticationService.isLogged = false;
$location.path("/login");
}

return $q.reject(rejection);
}
};
}];

$httpProvider.interceptors.push(interceptor);
}]);

关于AngularJS $http.interceptors.push 未捕获错误 : [$injector:unpr],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27737848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com