django - 使用 Django REST Framework 作为 Django 的身份验证后端

标签 django django-rest-framework django-rest-auth

我目前有一个利用 Django REST 框架的大型 Django 项目。

我有另一个较小的 Django 项目,我想在主要项目的基础上构建该项目,该项目不直接共享数据库,而是通过 API 获取必要的数据。

我想覆盖较小项目的 AUTHENTICATION_BACKEND 并让它使用较大项目的 API auth 端点作为身份验证器。

基本上流程如下:

  • 用户尝试使用大型 Django-DRF 项目中用户的凭据登录小型 Django 项目。
  • 小型 Django 项目向大型 Django-DRF 项目发送 API 登录请求。
  • 大型 Django-DRF 项目返回 API token 和序列化的用户信息。
  • 小型 Django 项目使用来自大型 Django-DRF 项目响应的信息自动将用户添加/更新到其数据库。
  • 小型 Django 项目使用 token 响应用户客户端,以便来自小型 Django 项目页面的 AJAX 请求可以直接发送到大型 Django-DRF 项目的端点。

  • 是否有值得在此用例中使用的现有插件,还是我应该编写自己的 AUTHENTICATION_BACKEND?

    最佳答案

    听起来您可能想查看 django-rest-framework-jwt .这将允许您使用 JWT 作为您的身份验证机制,它可以轻松处理您的情况。该项目实际上提供了一个专门用于您想要的端点,verify_jwt_token .根据documentation :

    In some microservice architectures, authentication is handled by a single service. Other services delegate the responsibility of confirming that a user is logged in to this authentication service. This usually means that a service will pass a JWT received from the user to the authentication service, and wait for a confirmation that the JWT is valid before returning protected resources to the user.



    因此,您的工作流程将类似于:
  • 用户向更大的 API 进行身份验证
  • 用户收到来自身份验证请求的 JWT
  • 用户将 JWT 与每个请求一起发送到较小的 API
  • 较小的 API 在收到 JWT 后,将其转发到 verify_jwt_token大型 API 中的端点
  • 关于django - 使用 Django REST Framework 作为 Django 的身份验证后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36631141/

    相关文章:

    Django 管理数据错误 : Value too long for type character varying(150)

    python - ListView 中的 Django 表单,表单 POST 时出错

    django-rest-auth 重置密码电子邮件包含 'example.com ' 域而不是 site_domain

    python - 在后台运行特定的 Django 脚本

    python - RuntimeWarning : DateTimeField Model. 当时区支持处于事件状态时,日期收到了幼稚的日期时间

    python - JSON 中的大整数被 Angular 而不是 CURL 损坏?

    django - 如何让自定义分页类适用于 django Rest Framework v3.6

    python - 如何在 DRF 中使字段可编辑=False

    python - DRF通过功能传输错误

    django - 有什么办法可以更改登录的Django-rest-auth的 View 吗?