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)
)