【发布时间】:2023-04-03 02:18:01
【问题描述】:
如果我可能有错误的代码,我很抱歉,但我并没有真正做 django 休息。我想从 django 的内置用户模型中检测权限。我向用户模型添加了权限,但由于某种原因 has_perm 不起作用。我改为使用 user_objects.all() 并检测权限对象是否存在。我想返回一个错误400:如果用户没有权限,则未授权。
这是我目前的解决方案(不工作):
class ProgramListCreateView(PermissionRequiredMixin,ListCreateAPIView):
permission_required = Permission.objects.get(name="Can CRUD")
permission_classes = (IsAuthenticated,)
queryset = Program.objects.all()
serializer_class = ProgramSerializer
def check_user(self,request):
if self.permission_required in request.user.user_permissions.all():
return True
return Response(status=400)
当我在未经许可的情况下发送带有用户令牌的 json 时,它仍然会创建对象
这是我的混音器:
class PermissionRequiredMixin(object):
user_check_failure_path = 'auth_login'
permission_required = None
def check_user(self, user):
return user.has_perm(self.permission_required)
注意:由于某种原因,has_perm 总是返回 false,即使我使用 user.user_permissions.add(permission_object) 添加它也是如此
【问题讨论】:
-
你了解 djangorest 自定义权限了吗?
-
是的,但是文档非常有限,所以我选择使用 mixins
标签: python django django-rest-framework mixins django-generic-views