Django Rest Framework:未提供身份验证凭据
Posted
技术标签:
【中文标题】Django Rest Framework:未提供身份验证凭据【英文标题】:Django Rest Framework : Authentication credentials were not provided 【发布时间】:2019-04-29 20:31:41 【问题描述】:当前数据库中的图片只有一条数据。
但是,我目前遇到以下错误
"GET /images/all/ HTTP/1.1" 401 58"
"detail": "Authentication credentials were not provided."
我的 Git Hub 网址:https://github.com/Nomadcoders-Study/Nomadgram
设置的哪一部分出错了?
【问题讨论】:
【参考方案1】:在你的设置文件中试试这个
settings.py
REST_FRAMEWORK =
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),
'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework_simplejwt.authentication.JWTAuthentication',),
【讨论】:
【参考方案2】:您可以将其添加到您的项目设置中的rest_framework配置
settings.py
REST_FRAMEWORK =
'DEFAULT_AUTHENTICATION_CLASSES'('rest_framework.authentication.BasicAuthentication', ),
【讨论】:
【参考方案3】:我看到了你的 Github 项目 settings.py 文件。
此错误是因为您对所有对 Rest API 的请求都使用 IsAuthenticated 后端。您还设置了 jwt 授权系统:
REST_FRAMEWORK =
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
),
所以基本上,如果您想向任何 API 端点创建请求,您应该在其中提供 jwt 令牌授权标头。像这样:
curl "<your api endpoint>" -H "Authorization: jwt <token_received>"
还记得通过在序列化程序中提供用户名和密码来设置 API 以从中接收令牌。
【讨论】:
关于DEFAULT_AUTHENTICATION_CLASSES
,可能有rest_framework_simplejwt.authentication.JWTAuthentication
和rest_framework.authentication.TokenAuthentication
这样的一些变化。对我来说,这个答案有效,因此使用rest_framework_jwt.authentication.JSONWebTokenAuthentication
。将Bearer
放在身份验证上也不起作用。必须是jwt
。以上是关于Django Rest Framework:未提供身份验证凭据的主要内容,如果未能解决你的问题,请参考以下文章
Django Rest Framework:未提供身份验证凭据
Django Rest Framework JWT 未提供身份验证凭据
django-oauth-工具包; Django Rest Framework - 未提供身份验证凭据
Django Rest Framework "detail":"未提供身份验证凭据。"