gpt4 book ai didi

django - 在 React SPA 中使用 Django 身份验证系统

转载 作者:行者123 更新时间:2023-12-04 01:31:21 24 4
gpt4 key购买 nike

我目前正在开发基于 React 和 Django 的应用程序。
我正在使用 Django rest Framework 创建在 React 前端使用的 REST API。这很好用。
我现在愿意使用 Django session 身份验证系统为应用程序实现身份验证。我可以创建身份验证 API。但是,我更喜欢使用 Django authentication system .
如何在 React SPA 中使用 Django 身份验证 View 和表单?
描述整体架构的代码片段将不胜感激。我不知道如何让 React 应用程序“调用 Django 代码”(除了 DRF API)!
我的问题是关于身份验证,但我可以为其他 Django View 重用相同的机制。

最佳答案

总之

一旦您的用户登录,他们的所有请求都将与他们的 Django 用户相关联,可在 request.user 中访问。 .因此,您无需在登录后通过 React 与 Django 的身份验证 View 进行交互。

详细

假设你有:

  • 'django.contrib.auth''django.contrib.contenttypes'在您的 INSTALLED_APPS
  • SessionMiddlewareAuthenticationMiddleware在您的 MIDDLEWARE设置
  • 主 urls.py 文件中的 auth url:

  • path('accounts/', include('django.contrib.auth.urls')

    然后您的用户可以使用位于 /accounts/login/ 的 View 登录。 .之后他们会得到一个 session cookie 随向 Django 服务器发出的每个请求一起发送。 Django 使用此 cookie 来识别发出请求的用户。 Django 在 request.user 中将这些信息提供给您.

    您可以使用此对象检查 DRF View 中的权限:

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

    笔记
  • 一旦用户通过身份验证,您将需要检查单个用户是否有权访问他们请求的数据 - 但权限是一个不同的主题。 DRF 有 documentation about permissions .
  • 对于非 GET 请求,您应该在请求中包含 CSRF token 。您可以使用 Django {% csrf_token %}标记以获取 token ,或从 cookie 中获取:var csrftoken = Cookies.get('csrftoken');
  • 关于django - 在 React SPA 中使用 Django 身份验证系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60973803/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com