2013-06-26 9 views
11

を設定不明プロバイダ:

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'にはdependenciyがあり、 'ngCookies'とangular-cookies.min.jsはコード化されていますので、そのコードに何が問題なのですか?

私はこの設定を.configで行っているのですか?

+1

「myApp」初期化コードを表示してみませんか? – Chandermani

答えて

14

を追加する必要があり、私は最終的にない要求変圧器ではなく、工場などのサービスを作成することによって、私のHTTPパラメータの上書きを行っています要求を行う。ここで

サービス(情報だけのために、テストされていない)のコード例である:使用

angular.module('sharewebapp', ['myapp-http-request']) 
.controller('MyController', ['MyRequests', function(MyRequests){ 
    MyRequests.authentifiedRequest('DELETE', '/logout', '', function(){alert('logged-out');}, function(){alert('error');}) 
}]); 
+0

工場のヘッダーは静的なので、これにも問題があります。ログインしてからもう一度試してみてください。古いトークンを使用していることがわかります。 – Rob

2

あなたはおそらく、それが設定プロバイダを渡すことだけが可能ですのでは、cookiestore

myApp.config(['$httpProvider', '$cookieStore', function($httpProvider, $cookieStore) 
+0

は既にテストされていますが、エラーは解消されますが、「未定義にすることはできません」、つまり$ cookieStoreは定義されていません – kij

+0

ああそうです。 configパーツではプロバイダのみを使用できますが、.runパーツではインスタンスのみを使用できます。私はcookieStoreがプロバイダーではないと思う。 –

+0

Damned。 $ httpでリクエストするときにヘッダーを動的に設定する別の方法はありますか? – kij

0

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); 
     } 
    } 
}); 

と使用の例(情報だけのために、テストされていません) Module.run()は、常に必要とされるヘッダーを設定するクリーンな方法のようです。私の答えはこちらをご覧ください:AngularJS pass requestVerificationToken to a service

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; 
    } 
    } 
}]) 
} 
関連する問題