DRF - Djoser returns 未授权所有请求

DRF - Djoser returns Unauthorized for all the requests

我正在使用 Djoser Python 包为我的应用程序创建身份验证。

如文档中所述,我已更新 settings.py,如下所示 -

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
    ],
}

另外我在APIView

中添加了permission_class

permission_classes = [IsAuthenticated]

我能够使用凭证获得 refreshaccess 令牌 -

{
    "refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTU4NjI1MDYyOCwianRpIjoiZmU5MjA0NzE2NWIwNGNjYmE5YzgzMWYwMDY5Njk4NzQiLCJ1c2VyX2lkIjoxfQ.I-IPEVrMchQWfGKv80x8pcIMHkEoMlUci7eRZGKjzOA",
    "access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2MTY0NTI4LCJqdGkiOiI4NGVlMmQ1OWUzYTI0MWU5OGJhNmQyMDBlNTc5NjQ5YSIsInVzZXJfaWQiOjF9.4InHnERd9u7nt8-iaNjt08Fd9169-VVAIYgBGa08euE"
}

但是当我尝试使用来自邮递员的相同 access 令牌发送 POST 请求时,我收到此错误 -

{
    "detail": "Authentication credentials were not provided."
}

这是邮递员请求的截图-

我认为这里的问题是提供给 Django Rest Framework 的身份验证 header。

您正在提供身份验证 header 作为 :

'Authorization': 'Bearer XXXXXXXX'

当 DRF 令牌身份验证需要时:

'Authorization': 'Token XXXXXXXX'

https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication

使用上面建议的 Header 或将 TokenAuthentication 子类化以支持 Bearer 关键字:

https://github.com/encode/django-rest-framework/commit/ffdac0d93619b7ec6039b94ce0e563f0330faeb1