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
相关产品推荐
相关产品推荐

