首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >身份验证凭据没有提供django-rest-auth

身份验证凭据没有提供django-rest-auth
EN

Stack Overflow用户
提问于 2018-05-29 16:32:10
回答 2查看 9.1K关注 0票数 3

我有一个应用程序,我实现了django restframework和django reat-auth和jango框架jwt。我遵循说明,每件事在浏览器中都能正常工作。现在,我决定在postman中测试连接,并尝试获取登录用户的详细信息(端点是/rest-auth/user ),但我得到了以下错误

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

然后,我决定复制返回的令牌,并将其放入用户url的头中,如

代码语言:javascript
复制
"Authorization": "Token ahagjbeghq7hbcvgqhvwqu08hevug.jwhhwiiwhw",
"Content-Type": "application/json; charset=utf-8"

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

代码语言:javascript
复制
{
    "detail": "Authentication credentials were not provided."
}

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

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

代码语言:javascript
复制
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',

    ),

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-29 16:37:36

对于jwt令牌,您应该使用JWT,而不是在Authorization头中使用Token

代码语言:javascript
复制
"Authorization: JWT <your_token>"
票数 6
EN

Stack Overflow用户

发布于 2020-05-10 17:53:45

正如@从不漫游者已经提到的那样,JWT关键字应该是Postman的header部分中授权的值。文档

此外,如果您不希望JWT作为关键字与您的令牌一起使用,您可以从您的设置中自定义它:使用以下键:JWT_AUTH_HEADER_PREFIX

代码语言:javascript
复制
JWT_AUTH = {
    'JWT_ENCODE_HANDLER':
    'rest_framework_jwt.utils.jwt_encode_handler',

    'JWT_DECODE_HANDLER':
    'rest_framework_jwt.utils.jwt_decode_handler',

    'JWT_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_payload_handler',

    'JWT_PAYLOAD_GET_USER_ID_HANDLER':
    'rest_framework_jwt.utils.jwt_get_user_id_from_payload_handler',

    'JWT_RESPONSE_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_response_payload_handler',

    'JWT_SECRET_KEY': settings.SECRET_KEY,
    'JWT_GET_USER_SECRET_KEY': None,
    'JWT_PUBLIC_KEY': None,
    'JWT_PRIVATE_KEY': None,
    'JWT_ALGORITHM': 'HS256',
    'JWT_VERIFY': True,
    'JWT_VERIFY_EXPIRATION': True,
    'JWT_LEEWAY': 0,
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),
    'JWT_AUDIENCE': None,
    'JWT_ISSUER': None,

    'JWT_ALLOW_REFRESH': True,
    'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),  
    'JWT_AUTH_HEADER_PREFIX': 'Bearer', #this most commonly accepted way
    'JWT_AUTH_COOKIE': None,

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50589041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档