【发布时间】:2014-08-21 08:47:38
【问题描述】:
为什么 Django REST Framework 实现了与内置 Django 机制不同的身份验证机制?
也就是说,可以配置两种设置类:
-
settings.AUTHENTICATION_BACKENDS处理 Django 级别的身份验证,以及 -
settings.REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES']在 REST 框架级别进行身份验证
我遇到的问题是我有一个中间件层来检查用户是否登录。
当使用通过会话进行身份验证的 Web 客户端时,这可以正常工作。但是,从移动设备或运行测试套件时(即使用 HTTP 标头和令牌进行身份验证),中间件将用户检测为 AnonymousUser,但当我们到达 REST 框架层时,HTTP Authorization 标头是读取,并且用户已登录。
为什么这些都不会发生在中间件之前?此外,为什么 REST Framework 的身份验证方法不依赖 Django 身份验证后端?
【问题讨论】:
-
好问题@BillyBBone。我遇到了同样的问题。您有没有想过在中间件中验证 DRF 请求的方法?
标签: django authentication django-rest-framework restful-authentication