0
第一次處理SPA。我有一個後端寧靜的服務,當用戶登錄時返回一個標記。我知道我應該通過每個請求中的標題發送標記,所以我想將標記保存在一個文件中,並創建一個服務或一個類在每個組件中加載標記,但我不知道這是否是一種好方法,因爲我找不到有關Angular Dart的文檔。如何在Angular Dart中處理令牌認證?
第一次處理SPA。我有一個後端寧靜的服務,當用戶登錄時返回一個標記。我知道我應該通過每個請求中的標題發送標記,所以我想將標記保存在一個文件中,並創建一個服務或一個類在每個組件中加載標記,但我不知道這是否是一種好方法,因爲我找不到有關Angular Dart的文檔。如何在Angular Dart中處理令牌認證?
我保存令牌首先在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',
)}
您可以將令牌保存在localStorage –
嗨,感謝您的提示。將它保存到localStorage非常高效,我可以按照我的計劃訪問令牌密鑰。我仍然無法在標題中設置授權。如果將它設置爲標題,我會從服務器收到401錯誤:{「Authorization」:「Token」+ token_key} –
這取決於服務器的準確內容。你在訪問什麼服務器? 「我無法找到Angular Dart的文檔」,這與Angular無關,並且不需要任何特殊的Angular支持。 –