2016-04-08 11 views
2

こんにちは私はちょうどAngularJsの初心者であり、あなたからのアドバイスや助けが必要です!同じAngular JS App内で異なる認証ヘッダーを持つ異なるAPIを使用する方法

私はログインして、建物内の現在の場所をCisco CMXサーバから確認できるアプリケーションを作成しています。 あなたが接続している複数のアクセスポイントの情報を使って自分の位置を計算するサーバー

ユーザーを認証するためにmongodbと通信する必要があります。トークンを使用します。

私がログインしているときに、別の認証ヘッダーを使用してCMXのAPIに行きたいと思っています。

しかし、私はそれがどのように機能するか見ることができません。

は、私が実行

$http.defaults.headers.common['Authorization'] = 'Bearer ' + $window.jwtToken; 

に私のapp.jsで私のデフォルトのヘッダーを設定し、私はCMX APIに行きたいとき、私は私のデフォルトのヘッダー

$http.defaults.headers.common['Authorization'] = 'Basic AAAAAAAAAAAAAAAAAAAAA=='; 

を変更しかし、それは文句を言わないんトリック..

クライアントではなくWebサーバー自体を通じてCMXと通信するほうが良いのですか?

おかげで、あなたはすべてのHTTPリクエストをインターセプトし、カスタム・トークンを含むAuthorizationヘッダーでそれを注入したいあなたのケースで

答えて

1

これを行うには、anglejsを使用する必要がありますインターセプタ


インターセプタは$ httpProvider.interceptors配列に追加することで $ httpProviderに登録されているサービス工場です。 工場が呼び出され、(指定されている場合)の依存性を注入 ここでインターセプターを


を返し、それはブラウザのローカルストレージにおいて利用可能かどうトークンを噴射インターセプターの一例です。

$httpProvider.interceptors.push(['$q', '$location', '$localStorage', function ($q, $location, $localStorage) { 
    return { 
     'request': function (config) { 
      config.headers = config.headers || {}; 
      if ($localStorage.token) { 
       config.headers.Authorization = 'Bearer ' + $localStorage.token; 
      } 
      return config; 
     }, 
     'responseError': function (response) { 
      if (response.status === 401 || response.status === 403) { 
       $location.path('/signin'); 
      } 
      return $q.reject(response); 
     } 
    }; 
}]); 

from

を触発コード
関連する問題