5

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

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

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

基本上,该过程如下:

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

是否有值得为此用例利用的现有插件,还是我应该编写自己的 AUTHENTICATION_BACKEND?

4

1 回答 1

3

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

在某些微服务架构中,身份验证由单个服务处理。其他服务委派确认用户登录到此身份验证服务的责任。这通常意味着服务将从用户接收到的 JWT 传递给身份验证服务,并等待确认 JWT 有效,然后再将受保护的资源返回给用户。

因此,您的工作流程将类似于:

  1. 用户向更大的 API 进行身份验证
  2. 用户从身份验证请求中收到 JWT
  3. 用户将 JWT 与每个请求一起发送到较小的 API
  4. 较小的 API 在收到 JWT 后,会将其转发到verify_jwt_token较大 API 中的端点
于 2016-04-14T18:42:50.570 回答