0

第一次處理SPA。我有一個後端寧靜的服務,當用戶登錄時返回一個標記。我知道我應該通過每個請求中的標題發送標記,所以我想將標記保存在一個文件中,並創建一個服務或一個類在每個組件中加載標記,但我不知道這是否是一種好方法,因爲我找不到有關Angular Dart的文檔。如何在Angular Dart中處理令牌認證?

+0

您可以將令牌保存在localStorage –

+0

嗨,感謝您的提示。將它保存到localStorage非常高效,我可以按照我的計劃訪問令牌密鑰。我仍然無法在標題中設置授權。如果將它設置爲標題,我會從服務器收到401錯誤:{「Authorization」:「Token」+ token_key} –

+0

這取決於服務器的準確內容。你在訪問什麼服務器? 「我無法找到Angular Dart的文檔」,這與Angular無關,並且不需要任何特殊的Angular支持。 –

回答

0

我保存令牌首先在localStorage的如砥Ø建議:

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個響應,當我試圖獲取用戶信息,這是功能:

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

我無法獲得授權,因爲django-rest-auth未正確配置令牌授權。解決方案是將TokenAuthentication添加到django設置中的默認身份驗證類。

REST_FRAMEWORK = { 
'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.BasicAuthentication', 
    'rest_framework.authentication.SessionAuthentication', 
    'rest_framework.authentication.TokenAuthentication', 
)}