簡體   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