You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DRF API端点Basic Authentication报错“Authentication credentials were not provided”求助

排查DRF中Basic Authentication无法生效的问题

我来帮你一步步排查这个问题,从最常见的原因开始梳理:

1. 先确认Postman的请求配置是否正确

Postman的Basic Auth功能需要正确生成Authorization请求头。你可以按以下步骤检查:

  • 在Postman的"Authorization"标签页选择"Basic Auth",输入正确的用户名和密码,点击"Update Request"。
  • 切换到"Headers"标签页,确认存在Authorization头,格式为Basic [base64编码的字符串](比如Basic dXNlcjE6cGFzc3dvcmQ=)。
  • 如果手动修改过Headers,可能会覆盖自动生成的内容,这时候要确保没有误删或修改这个头。

2. 检查DRF认证类的配置优先级

你的全局认证类配置中,BasicAuthentication排在最后。虽然DRF会按顺序尝试所有认证类,但有时候前面的认证类(比如SessionAuthentication)可能会先捕获请求,导致BasicAuth没有被触发。可以尝试调整顺序,把BasicAuthentication放在最前面,看看是否生效:

REST_FRAMEWORK['DEFAULT_AUTHENTICATION_CLASSES'] = (
    'rest_framework.authentication.BasicAuthentication',
    'rest_framework.authentication.SessionAuthentication',
    'rest_framework.authentication.TokenAuthentication',
)

3. 验证用户密码是否正确加密

DRF的BasicAuthentication依赖于Django用户模型的密码加密机制。如果你的用户密码是明文存储的,验证会直接失败。你可以:

  • 进入Django后台,查看对应用户的password字段,确认开头是pbkdf2_sha256$之类的加密前缀(而不是明文)。
  • 如果是新创建的用户,确保使用User.objects.create_user()而不是直接User.objects.create(),前者会自动加密密码。

4. 在视图中显式指定认证类

有时候全局配置可能被其他地方覆盖,你可以在视图中强制指定BasicAuthentication,排除全局配置的干扰:

from rest_framework.authentication import BasicAuthentication

class ReportsDashboardView(views.APIView):
    permission_classes = (IsAuthenticated, IsActiveUser,)
    authentication_classes = (BasicAuthentication,)  # 显式指定认证类

    def get(self, request, format=None):
        # 你的业务逻辑
        ...

5. 检查请求头是否被中间件/服务器拦截

有些Web服务器(比如Nginx)或自定义中间件会默认移除Authorization头,导致DRF无法获取认证凭证。你可以在视图中打印请求头,确认是否接收到:

def get(self, request, format=None):
    print("Authorization Header:", request.META.get('HTTP_AUTHORIZATION'))
    # 你的业务逻辑
    ...

如果打印结果是None,说明请求头没有到达DRF,这时候需要检查服务器配置或中间件是否修改了请求头。

6. 排除权限类的干扰

虽然错误信息指向认证问题,但可以暂时简化权限配置,只保留IsAuthenticated,看看是否是IsActiveUser权限类的逻辑导致的误判:

class ReportsDashboardView(views.APIView):
    permission_classes = (IsAuthenticated,)
    # 其他配置不变

按这个顺序排查,应该能找到问题所在。

内容的提问来源于stack exchange,提问作者Snipper03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:07:34