我们正在使用rest_framework.authentication.TokenAuthentication
使用访问令牌在Django REST Framework中验证API用户。
有没有办法通常使用同一个类来验证Django的用户?
我已尝试将其直接添加到AUTHENTICATION_BACKENDS
,但它不起作用:
AUTHENTICATION_BACKENDS = (
# Needed to login by username in Django admin, regardless of `allauth`
"django.contrib.auth.backends.ModelBackend",
# `allauth` specific authentication methods, such as login by e-mail
"allauth.account.auth_backends.AuthenticationBackend",
'rest_framework.authentication.TokenAuthentication',
)
是否有快速方法可以执行此操作,还是需要编写自定义身份验证后端?
答案 0 :(得分:1)
Django REST框架身份验证和权限类需要使用Django REST框架视图,因为身份验证是在视图级别 [1] 上完成的。这与Django身份验证后端不同,后端身份验证是通过中间件完成的。
有没有办法通常使用同一个类来验证Django的用户?
不,Django REST框架身份验证后端与Django身份验证后端明显不同,反之亦然技术上 true [2] 。
[1]:已经讨论过将其移至中间件级别,但目前尚未计划。
[2]:Django身份验证后端可以通过SessionAuthentication
和其他类似的DRF后端使用。
答案 1 :(得分:0)
您可以使用 SessionAuthentication 。
AUTHENTICATION_BACKENDS = (
# Use Django's session framework for authentication.
'rest_framework.authentication.SessionAuthentication,'
....
'rest_framework.authentication.TokenAuthentication',
)