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.JWTAuthenticationrest_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":"未提供身份验证凭据。"

未提供身份验证凭据。 Django Rest Framework/JWT 和 React 原生 iOS

Django rest framework 之 DictField、ListField、自定义字段