在以下代码示例中:
myApp.config(['$httpProvider', function($httpProvider, $cookieStore) {
$httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.headers.get['Authorization'] = 'Basic '+ $cookieStore.get('myToken');
return JSON.stringify(data);
}]);
我收到了像'未知提供商$ cookieStore'这样的angularjs错误。
'myApp'有依赖关系,'ngCookies'和angular-cookies.min.js是laoded,那么代码有什么问题?
是不是我在.config中做这个事实?
答案 0 :(得分:14)
因为配置时只能传递提供者,所以我终于完成了我的http参数的覆盖,而不是使用请求转换器,而是通过创建服务作为工厂来处理请求。
以下是该服务的代码示例(未经测试,仅供参考):
angular.module('myapp-http-request', []);
angular.module('myapp-http-request')
.factory('MyRequests', function($http, $cookieStore){
return {
request: function(method, url, data, okCallback, koCallback){
$http({
method: method,
url: url,
data: data
}).success(okCallback).error(koCallback);
},
authentifiedRequest: function(method, url, data, okCallback, koCallback){
$http({
method: method,
url: url,
data: data,
headers: {'Authorization': $cookieStore.get('token')}
}).success(okCallback).error(koCallback);
}
}
});
使用示例(未经测试,仅供参考):
angular.module('sharewebapp', ['myapp-http-request'])
.controller('MyController', ['MyRequests', function(MyRequests){
MyRequests.authentifiedRequest('DELETE', '/logout', '', function(){alert('logged-out');}, function(){alert('error');})
}]);
答案 1 :(得分:2)
您可能需要添加cookieStore
myApp.config(['$httpProvider', '$cookieStore', function($httpProvider, $cookieStore)
答案 2 :(得分:2)
我遇到了同样的问题所以我会发布我如何解决它。我基本上使用$ injector模块来手动获取我需要的服务实例。请注意,这也适用于用户定义的服务。
angular.module('app').
config(config);
config.$inject = ['$httpProvider'];
function config($httpProvider) {
//Inject using the $injector
$httpProvider.interceptors.push(['$injector', function($injector){
return {
request: function(config) {
//Get access by injecting an instance of the desired module/service
let $cookieStore = $injector.get('$cookieStore');
let token = $cookieStore.get('your-cookie-name');
if (token) {
config.headers['x-access-token'] = token;
}
return config;
}
}
}])
}
答案 3 :(得分:0)
使用Module.run()似乎是一种更简洁的方法来设置始终需要的标头。请在此处查看我的回答:AngularJS pass requestVerificationToken to a service