Django 休息框架 + 简单 JWT - 权限 类 始终启用

Django rest framework + simple JWT - permission classes always enabled

我在休息时使用 simple JWT 进行身份验证 API。

在我基于函数的视图中,我使用 @permission_classes([IsAuthenticated]) 定义访问该视图需要 JWT 令牌。

但是,我有一些视图不需要身份验证令牌,因此我没有插入 @permission_classes([IsAuthenticated]),但是当我测试视图时它仍然需要令牌。

这是一个例子:

@api_view(['POST'])
def userCreate(request):
    serializer = UserSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(status=201)
    
    return Response(serializer.errors, status=400)

当我尝试访问此视图时,服务器回复 401 并说:

{
    "detail": "Authorization header must contain two space-delimited values",
    "code": "bad_authorization_header"
}

在我的 settings.py 文件中,我设置了:

...
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}

您可以在希望任何用户访问该视图的函数中使用 allow any

from rest_framework.permissions import AllowAny

@permission_classes([AllowAny])