簡體   English   中英

在 React SPA 中使用 Django 身份驗證系統

[英]Using the Django authentication system within a React SPA

我目前正在開發基於 React 和 Django 的應用程序。

我正在使用 Django rest Framework 創建在 React 前端使用的 REST API。 這很好用。

我現在願意使用 Django 會話身份驗證系統為應用程序實現身份驗證。 我可以創建身份驗證 API。 但是,我更喜歡使用Django 身份驗證系統

如何在 React SPA 中使用 Django 身份驗證視圖和表單?

描述整體架構的代碼片段將不勝感激。 我不知道如何讓 React 應用程序“調用 Django 代碼”(除了 DRF API)!

我的問題是關於身份驗證,但我可以為其他 Django 視圖重用相同的機制。

總之

一旦您的用戶登錄,他們的所有請求都將與他們的 Django 用戶相關聯,可在request.user訪問。 因此,您無需在登錄后通過 React 與 Django 的身份驗證視圖進行交互。

詳細

假設你有:

  1. INSTALLED_APPS 'django.contrib.auth''django.contrib.contenttypes'
  2. MIDDLEWARE設置中的SessionMiddlewareAuthenticationMiddleware
  3. 主 urls.py 文件中的 auth url:
path('accounts/', include('django.contrib.auth.urls')

然后您的用戶可以使用/accounts/login/的視圖/accounts/login/ 之后,他們將獲得一個session cookie,該 cookie 隨向您的 Django 服務器發出的每個請求一起發送。 Django 使用此 cookie 來識別發出請求的用戶。 Django 在request.user向您提供該信息。

您可以使用此對象檢查 DRF 視圖中的權限:

if request.user.is_staff:
    # Do something for staff users.
else:
    # ...

筆記

  1. 一旦用戶通過身份驗證,您將需要檢查單個用戶是否有權訪問他們請求的數據 - 但權限是一個不同的主題。 DRF 有關於權限的文檔

  2. 對於非 GET 請求,您應該在請求中包含 CSRF 令牌。 你可以使用 Django {% csrf_token %}標簽來獲取令牌,或者從 cookie 中獲取它: var csrftoken = Cookies.get('csrftoken');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM