Django REST框架TokenAuthentication一般在Django中进行身份验证

时间:2015-05-08 13:50:41

标签: python django django-rest-framework

我们正在使用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',
)

是否有快速方法可以执行此操作,还是需要编写自定义身份验证后端?

2 个答案:

答案 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',
)