Django Rest-Auth调用/rest-auth/user接口提示未提供认证凭证求助
解决Django REST Framework JWT认证在Postman中无法访问/rest-auth/user的问题
你遇到的核心问题其实是请求头的认证 scheme 不匹配——你用了DRF原生Token认证的格式,但JWT认证需要对应的专属前缀。
直接解决步骤
修改Postman的Authorization请求头格式
你当前写的是:"Authorization": "Token ahagjbeghq7hbcvgqhvwqu08hevug.jwhhwiiwhw"改成
rest_framework_jwt默认要求的格式:"Authorization": "JWT ahagjbeghq7hbcvgqhvwqu08hevug.jwhhwiiwhw"原因很简单:
Token是给rest_framework.authentication.TokenAuthentication用的(它依赖DRF自带的Token模型生成的令牌),而你的JWT令牌需要用JWT作为前缀,才能被JSONWebTokenAuthentication识别。适配自定义JWT配置(如果有)
如果你在settings.py里自定义过JWT的头前缀,比如:JWT_AUTH = { 'JWT_AUTH_HEADER_PREFIX': 'Bearer', }那就要把请求头改成
Authorization: Bearer <你的JWT令牌>,和配置保持一致。
问题根源拆解
- 你的
DEFAULT_AUTHENTICATION_CLASSES里JSONWebTokenAuthentication排在第一位,DRF会优先用它验证请求。当你用Token前缀时,JWT认证类无法识别,会直接跳过;接着TokenAuthentication尝试验证,但你的令牌是JWT格式,不是DRF Token模型生成的,自然验证失败;最后就返回了"Authentication credentials were not provided"。 - 而
/api-token-verify端点不需要Authorization头,只要把JWT令牌放在请求体里(比如{"token": "你的JWT令牌"})就能验证,所以它能正常工作。
额外排查小技巧
- 检查请求头是否有拼写错误,比如
Authorization有没有写错,或者前缀和令牌之间的空格是否正确。 - 可以在
UserDetailsView里临时加一行调试代码,确认Postman的请求头是否正确传到后端:
看输出是否和你设置的一致。print(request.META.get('HTTP_AUTHORIZATION'))
内容的提问来源于stack exchange,提问作者King
相关产品推荐
相关产品推荐

