0

初めてSPAを扱う。私は、ユーザーがサインインしたときにトークンを返す、バックエンドの快適なサービスを持っています。私は、トークンを各要求でヘッダーに送信することになっているので、トークンをファイルに保存し、すべてのコンポーネントでトークンを読み込むクラスですが、これについては、これについてのAngular Dartのドキュメントが見つからないため、これが良いアプローチであるかどうかはわかりません。Angular Dartでトークン認証を処理する方法は?

+0

トークンをlocalStorageに保存することができます –

+0

こんにちは、ヒントありがとうございます。それをlocalStorageに保存するのは非常に効率的でした。私が計画したようにトークンキーにアクセスできます。私はまだヘッダーに承認を設定することはできません。 {"Authorization": "Token" + token_key} –

+0

これはサーバーが何を正確に予想しているかによって異なります。どのサーバーにアクセスしていますか? 「Angular Dartのドキュメントを見つけることができません」というのはAngularには関係なく、Angularの特別なサポートは必要ありません。 –

答えて

0

戸部Oが示唆したように、私は最初のlocalStorageにトークンを保存:

Future check_authentification() async { 
     String _headers_key = "Authorization"; 
     String _headers_value = "Token "+window.localStorage["token"]; 
     var response = await _client.get("http://127.0.0.1:8000/auth/user/", headers: {_headers_key: _headers_value}); 
     user_data = _decoder.convert(response.body); 
     response_status = response.statusCode; 
    } 

Future login(username, password) async { 
    String url = 'http://127.0.0.1:8000/auth/login/'; 
    var response = 
    await _client.post(url, body: {'username': username, 'password': password}); 
    Map mapped_response = _decoder.convert(response.body); 
    window.localStorage.addAll({"token": mapped_response["key"]}); 
} 

をしかし、まだ、私は401の応答を受信して​​いた私は、ユーザー情報を取得しようとしたとき、これは関数でしたdjango-rest-authがトークン認可のために適切に構成されていないため、私は認可を得ることができませんでした。解決策は、TokenAuthenticationをdjango設定のデフォルトの認証クラスに追加することでした。

REST_FRAMEWORK = { 
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.BasicAuthentication', 
    'rest_framework.authentication.SessionAuthentication', 
    'rest_framework.authentication.TokenAuthentication', 
)} 
関連する問題