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,需确保:
- 在
INSTALLED_APPS中添加rest_framework.authtokenINSTALLED_APPS = [ ... 'rest_framework.authtoken', ] - 执行数据库迁移:
python manage.py migrate - 为用户生成认证Token(可通过Django admin或代码生成)
内容的提问来源于stack exchange,提问作者Shervin.bdn
相关产品推荐
相关产品推荐

