4. DRF 权限

Django DRF 权限

1. 使用

1.1 设置认证全局变量

在settings.py添加如下代码


REST_FRAMEWORK = {
    "DEFAULT_PERMISSION_CLASSES": ['utils.permission.MinePermission']
}

1.2 为单个视图方法设置权限

class Home2(APIView):
    permission_classes = [MinePermission]

    def get(self, reqeust):
        return JsonResponse({"status": True, 'data': 'OK'})

    def post(self, request):
        print(request.user, request.auth)
        return JsonResponse({"status": True, 'data': 'OK'})

2. 魔改

如果定义了多个permission类, 当有一个permission类返回了False就相当于permission失败
但是如果想要改成当只有一个permission成功就相当于permission成功了呢

定义了三个permission类, 一个返回True 其他两个返回False, permission校验未通过

添加魔改代码, 校验通过

    def check_permissions(self, request):
        permission_result = []
        for permission in self.get_permissions():
            permission_result.append(permission.has_permission(request, self))
            if True not in permission_result:
                self.permission_denied(
                    request,
                    message=getattr(permission, 'message', None),
                    code=getattr(permission, 'code', None)
                )

posted @ 2024-07-11 20:14  khalil12138  阅读(7)  评论(0编辑  收藏  举报