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]
我能够使用凭证获得 refresh
和 access
令牌 -
{
"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
我正在使用 Djoser Python 包为我的应用程序创建身份验证。
如文档中所述,我已更新 settings.py
,如下所示 -
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}
另外我在APIView
permission_class
permission_classes = [IsAuthenticated]
我能够使用凭证获得 refresh
和 access
令牌 -
{
"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