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

Django Token认证报错:Postman请求返回‘未提供认证凭据’

问题解决:注册接口返回"Authentication credentials were not provided."

核心原因

你在DRF全局配置里把默认权限设成了IsAuthenticated,这意味着所有接口都要求用户先登录才能访问,但注册接口本来就是给未登录用户开放的,两者直接冲突,导致未携带Token的注册请求被拦截。

修复步骤

1. 给注册视图开放匿名访问权限

修改views.py中的RegisterUserView,添加权限类指定允许匿名访问:

from rest_framework.permissions import AllowAny  # 先导入权限类

class RegisterUserView(GenericAPIView):
    serializer_class=UserSerializer
    permission_classes = [AllowAny]  # 新增该行,覆盖全局权限配置

    def post(self, request):
        user_data=request.data
        serializer=self.serializer_class(data=user_data)
        if serializer.is_valid(raise_exception=True):
            serializer.save()
            user=serializer.data
            send_code_to_user(user['email'])
            return Response({
                'data':user,
                'message':f'hi {user["username"]}'  # 注意:user是字典,需用索引访问而非属性
            }, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

2. 修复序列化器语法错误

serializers.py的create方法中,validated_data.get['username']是错误写法,get是字典方法,需用括号调用:

def create(self, validated_data):
    user=Users.objects.create_user(
        email=validated_data['email'],
        username=validated_data.get('username'),  # 把[]改为()
        password=validated_data.get('password'),  # 此处同样修正
    )
    return user    

3. 确保Token认证配置完整

  • 在项目settings.py的INSTALLED_APPS中添加'rest_framework.authtoken'
  • 执行数据库迁移命令生成Token存储表:python manage.py migrate

额外提示

用Postman请求注册接口时,不要在请求头中携带Authorization字段,注册接口不需要认证凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:05:20