【问题标题】:Django Rest Framework : Authentication credentials were not providedDjango Rest Framework:未提供身份验证凭据
【发布时间】: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

设置的哪一部分出错了?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案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
        猜你喜欢
        • 2015-05-16
        • 2015-01-10
        • 2015-02-05
        • 2018-02-25
        • 2019-02-19
        • 2021-06-15
        • 2022-11-10
        • 1970-01-01
        • 2020-07-17
        相关资源
        最近更新 更多