繁体   English   中英

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

[英]Django REST Framework TokenAuthentication to authenticate in Django generally

我们正在使用rest_framework.authentication.TokenAuthentication使用访问令牌对 Django REST 框架中的 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',
)

有没有一种快速的方法可以做到这一点,或者我是否需要编写自定义身份验证后端?

Django REST framework 身份验证和权限类需要使用 Django REST framework 视图,因为身份验证是在视图级别完成的[1] 这与 Django 身份验证后端不同,后者通过中间件完成身份验证。

有没有办法使用同一个类来验证 Django 的用户?

不,Django REST framework 身份验证后端与 Django 身份验证后端明显分开,技术上正好相反[2]

[1]:已经讨论过将其移至中间件级别,但目前还没有计划。
[2]:Django 身份验证后端可以通过SessionAuthentication和其他类似的 DRF 后端使用。

您可以使用SessionAuthentication

AUTHENTICATION_BACKENDS = (
    # Use Django's session framework for authentication.
    'rest_framework.authentication.SessionAuthentication',
    ....
    'rest_framework.authentication.TokenAuthentication',
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM