我可以使用DRF覆盖ApiView中单个请求类型的全局身份验证吗?

2024-04-25 06:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在一个大型项目中使用django_rest_框架(DRF)。通常,我希望所有视图都受到保护,因此我将令牌身份验证设置为全局身份验证方案。但有几个视图我希望关闭它,例如,创建新用户和登录

例如,我的/Userapieview有一个getpost方法。get返回用户配置文件,post创建新用户。如何仅覆盖/Userpost上的全局身份验证方案?我仍然需要在获取用户信息时打开它

我要求更多的是提高我对DRF的理解。我知道我可以将/User/调用分为不同的APIview,其中一个经过身份验证,另一个没有。我还知道,我可以完全放弃全局方案,并在预查看的基础上进行身份验证

有没有一种特别“pythonic”或django的典型方式来做到这一点?有什么建议吗


Tags: django方法用户框架身份验证视图restget
1条回答
网友
1楼 · 发布于 2024-04-25 06:02:58

您可以编写自定义permission class,并在某些视图中使用它。例如:

from rest_framework.permissions import BasePermission

class AllowPostAny((BasePermission):
    def has_permission(self, request, view):
        if request.method == "POST":
            return True
        return bool(request.user and request.user.is_authenticated)  

您现在可以在视图中使用此权限:

class ExampleView(APIView):
    permission_classes = [AllowPostAny]

相关问题 更多 >