首页 > 解决方案 > Django rest 框架 + 简单 JWT - 始终启用权限类

问题描述

我在我的 rest API 中使用简单的 JWT进行身份验证。

在我的基于函数的视图中,我@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
}

标签: djangodjango-viewsdjango-rest-framework-simplejwt

解决方案


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

from rest_framework.permissions import AllowAny

@permission_classes([AllowAny])


推荐阅读