2016-08-30 14 views
3

私はapiと対話するために角$ httpを使用したいと思いますが、私の認証トークンを$ httpに保存する必要があります。私はトークンが存在することを望んでいる、私は人がヘッダーに置くトークンを見た、私はヘッダーに配置する方法を知っているが、ヘッダーにトークンを置くための良い練習は、ここで私はconfig:

config(['$stateProvider', '$urlRouterProvider','$http', function($stateProvider, $urlRouterProvider, $http) { 
    $urlRouterProvider.otherwise("/view1"); 

}]); 
+0

助けがあれば、「Restangular」を試してみてください。これはすばらしい図書館です!あなたはRectangularを1回設定することができ、すべての呼び出しでトークンを持っています – gianlucatursi

+0

設定に$ httpを注入しますか?それは不可能ではありません。 – gyc

答えて

1

トークン認証が必要なAPIと通信するには、インターセプタを設定する必要があります。お使いの設定ファイルで

:、トークンはのsessionStorageから来ることができる

function authInterceptor($rootScope, $q, $window) { 
    return { 
     request: function (config) { 
      config.headers = config.headers || {}; 
      if ($window.sessionStorage.token) { 
       config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token; 
      } 
      return config; 
     }, 
     responseError: function (rejection) { 
      if (rejection.status === 401) { 
       console.log("not authorised"); 
      } 
      return $q.reject(rejection); 
     } 
    }; 
}; 

angular 
    .module('app') 
    .factory('authInterceptor', authInterceptor); 

クッキーや:

function config(..., $httpProvider) { 
    $httpProvider.interceptors.push('authInterceptor'); 
    ... 
} 
angular 
    .module('app') 
    .config(config); 

authInterceptorは、すべての$のHTTP要求にヘッダを追加するの世話をする工場です何でも

1

config $ httpスタートアップ時のhttp!

'use strict'; 

angular.module('app') 
    .config(configHttp); 

configHttp.$inject = ['$httpProvider']; 
function configHttp($httpProvider) { 
    if (!$httpProvider.defaults.headers.get) { 
     $httpProvider.defaults.headers.get = {}; 
    } 
    //disable IE ajax request caching 
    $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT'; 
    // extra 
    $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache'; 
    $httpProvider.defaults.headers.get.Pragma = 'no-cache'; 
    // User Credential 
    $httpProvider.defaults.headers.post['user-credential'] = 'xxxxxx'; 
} 
0

HTTP仕様に従い、認証トークンの正しい場所がヘッダーにあることが明らかです。

+0

@Mikailが彼のajax呼び出しのヘッダーでトークンを使用する前に実行する必要のあるロジックを持っている場合に、ここでインターセプターを使用する方が良いでしょうか? – Chris

+0

許可トークンは、ヘッダーに複数の方法で追加することができ、その必要性と要件に基づいて決定する必要があります。あなたは、盗聴器を使用する方が良いかもしれない場合があります。私は私の答えを編集しました、ありがとう –

関連する問題