gpt4 book ai didi

django - 为什么 Django REST Framework 提供不同的身份验证机制

转载 作者:行者123 更新时间:2023-12-03 15:00:08 24 4
gpt4 key购买 nike

为什么 Django REST Framework 实现了与内置 Django 机制不同的身份验证机制?

也就是说,可以配置两个设置类:

  • settings.AUTHENTICATION_BACKENDS处理 Django 级别的身份验证,以及
  • settings.REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES']在 REST 框架级别进行身份验证

  • 我遇到的问题是我有一个中间件层来检查用户是否登录。

    使用通过 session 进行身份验证的 Web 客户端时,这可以正常工作。但是,在移动端或运行测试套件时(即使用 HTTP header 和 token 进行身份验证),中间件将用户检测为 AnonymousUser ,但是当我们到达 REST 框架层时,HTTP Authorization读取 header ,并且用户已登录。

    为什么这些不在中间件之前发生?此外,为什么 REST Framework 的身份验证方法不依赖于 Django 身份验证后端?

    最佳答案

    默认情况下,Django Rest Framework 不在中间件中执行身份验证,原因与 Django 默认不在中间件中执行身份验证相同:中间件适用于所有 View ,并且当您只想对一小部分 View 的访问进行身份验证时就显得过分了。此外,能够为不同的 API 端点提供不同的身份验证方法是一个非常方便的功能。

    Rest Framework 的身份验证方法不依赖于 Django 身份验证后端,因为 Django 的后端针对常见情况进行了优化,并且与用户模型密切相关。 Rest Framework 旨在简化以下操作:

  • 使用许多不同的身份验证方法。 (您想要基于 HMAC 的身份验证?完成了!这在 django 身份验证框架中是不可能的)
  • 无需数据库支持即可提供 API 数据。 (您有一个 redis 数据库,所有数据都在内存中?在几毫秒内提供服务,而无需等待往返 DB 用户模型。)
  • 关于django - 为什么 Django REST Framework 提供不同的身份验证机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24499304/

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