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

Django DRF获取数据报错:Authentication credentials were not provided 求助

解决DRF「Authentication credentials were not provided.」错误

以下是针对该问题的常见排查和解决步骤:

1. 检查全局权限与认证配置(settings.py)

DRF默认权限策略可能要求请求必须携带认证凭证。如果你的API是公开可访问的,可修改REST_FRAMEWORK配置,将默认权限改为允许所有请求:

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny',
    ],
    # 若API需要认证,确保配置了正确的认证类(比如Token/JWT),同时请求需携带对应凭证
    # 'DEFAULT_AUTHENTICATION_CLASSES': [
    #     'rest_framework.authentication.TokenAuthentication',
    # ]
}

2. 检查视图的权限设置(views.py)

如果视图类单独设置了权限规则,会覆盖全局配置。确认你的视图没有强制要求认证权限:

from rest_framework.permissions import AllowAny
from rest_framework.views import APIView

class YourDataAPI(APIView):
    # 替换为AllowAny,临时关闭认证要求(若为公开接口)
    permission_classes = [AllowAny]

    def get(self, request):
        queryset = YourModel.objects.all()
        serializer = YourSerializer(queryset, many=True)
        return Response(serializer.data)

# 若使用ModelViewSet
# class YourDataViewSet(viewsets.ModelViewSet):
#     permission_classes = [AllowAny]
#     queryset = YourModel.objects.all()
#     serializer_class = YourSerializer

3. 确认请求是否携带正确的认证凭证(若API需要认证)

如果你的API确实需要用户认证,需确保请求携带对应凭证:

  • Token认证:请求头添加 Authorization: Token <用户的token字符串>
  • JWT认证:请求头添加 Authorization: Bearer <JWT token>
  • Session认证:确保请求携带sessionid cookie(通常浏览器自动处理,Postman等工具需手动添加)

4. 检查认证类的依赖配置

若使用TokenAuthentication,需确保:

  1. 在INSTALLED_APPS中添加rest_framework.authtoken
    INSTALLED_APPS = [
        ...
        'rest_framework.authtoken',
    ]
    
  2. 执行数据库迁移:python manage.py migrate
  3. 为用户生成认证Token(可通过Django admin或代码生成)

内容的提问来源于stack exchange,提问作者Shervin.bdn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 06:13:10