首页 > 解决方案 > 未提供身份验证凭据 django-rest-auth

问题描述

我有一个应用程序,我实现了 django restframework 和 django reat-auth 和 jango framework jwt。我按照说明进行操作,并且在浏览器中一切正常。我现在决定在邮递员中测试连接并尝试获取端点所在的登录用户详细信息,/rest-auth/user但出现以下错误

{ "detail": "Authentication credentials were not provided." }

我决定复制返回的 Token 并将其放在用户 url 的标题中

"Authorization": "Token ahagjbeghq7hbcvgqhvwqu08hevug.jwhhwiiwhw",
"Content-Type": "application/json; charset=utf-8"

用返回的令牌修改标题后,我希望它显示用户的详细信息,但我仍然得到

{
    "detail": "Authentication credentials were not provided."
}

但是我可以通过restframework jwt提供的url来验证令牌是否正确

/api-token-verify它将令牌值返回。这是我的 django rest 身份验证类

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.BasicAuthentication',

    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.AllowAny',
        'rest_framework.permissions.IsAuthenticatedOrReadOnly',

    ),

}

标签: djangodjango-rest-frameworkdjango-rest-auth

解决方案


您应该使用JWT而不是Token内部Authorization标头来获取 jwt 令牌:

"Authorization: JWT <your_token>"

推荐阅读