【问题标题】:DRF - Djoser returns Unauthorized for all the requestsDRF - Djoser 对所有请求返回 Unauthorized
【发布时间】:2020-07-18 06:10:45
【问题描述】:

我正在使用 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 djoser


    【解决方案1】:

    我认为这里的问题在于提供给 Django Rest Framework 的身份验证标头。

    您提供的身份验证标头为:

    '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

    【讨论】:

      猜你喜欢
      • 2018-09-07
      • 1970-01-01
      • 2022-01-11
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 2019-07-24
      • 1970-01-01
      相关资源
      最近更新 更多