2017-06-12 16 views
1

javascriptには、私のサーバーにhttp投稿リクエストを使って正常に認証する方法があります。私のサーバーからJavascript(Angular2/4)の認証ヘッダーからベアラトークンを取得するにはどうすればよいですか?

応答データはそうのようなAuthorizationヘッダーにJWTを送信している:

Authorization: Bearer mytoken12345abc 

私は自分のサーバーから成功した認証ヘッダーを取得することができ、たとえばそのようなデータを応答:

let authheader = response.headers.get('Authorization'); 

しかし、これはどのように解析するのですか? 「運搬人」は鍵ですか?だから何かのように:

let token = authheader.Bearer 

これは明らかに正しくありません...誰でも助けてくれますか?

他の言葉で言えば、次の最良のアプローチですか?

let token = response.headers.get('Authorization'); 
let parsedToken = token.slice(7); 
+0

角度で作業していますか? –

+0

あり角2/4 –

+0

バックエンドnodejs? –

答えて

2

ユーザが保護されたルートまたはリソースにアクセスしたいときは、ユーザエージェントは通常、ベアラスキーマを使用してAuthorizationヘッダーにJWTを送信する必要があります。

したがってAuthorizationヘッダにJWTを使用して、初期応答をクライアントではなく、サーバによって使用されることになっています。

正しい方法は、応答本体の一部としてトークンを取得することです。

{ jwt: TOKEN } 

タイプスキームを使用します。 その後、response.json()で簡単にアクセスできます。

response.headers.get(...)を使用して直接ヘッダー値にアクセスできますが、split,substrまたは正規表現で実際のトークンを取得する必要があります。

0

あなたはそれが

以下のような安全な方法だヘッダーでサーバー設定認証トークンにサービスを呼び出すたびに、あなたが

sessionStorage.setItem('token', authheader); 

以下のようなローカルブラウザセッション/のストレージにそれを設定し、サーバーからトークンを取得jwt.ioドキュメンタリーによる

import { Http, Headers, RequestOptions, Response } from '@angular/http'; 
    getUser(){ 

      let headers = new Headers({ 'Authorization': 'Bearer ' + sessionStorage.getItem('token') }); 
      let options = new RequestOptions({ headers: headers }); 

      // get users from api 
      return this.http.get('http://localhost:9000/api/user', options) 
       .map((response: Response) => response.json()); 
     } 
+0

これはありがとう、私はこれを正確に理解しています...私はトークンをsessionStorageに設定する前に、どうすれば "Authorization"ヘッダから取得できますか?私のサーバーは、サーバーに送信する方法を私に示しているのと同じ方法で、ヘッダーにトークンを送信しています... –

+0

意味はありますか? Angular2のAPIヘッダーからトークンを取得したいですか? –

+0

はい、私のサーバーは "Authorization"ヘッダーでログインに成功した後にトークンを送信しています:承認:ベアラmytoken123abc ... –

関連する問題