我需要某些用户来编辑django.contrib.auth.models.User
对象。
我的第一个想法是授予他们auth | User | Can change user
权限并将它们标记为is staff
,以便他们可以登录 Django 管理站点。但问题是,他们可以用它来让自己成为超级管理员。
由于我希望他们只能编辑某些字段,因此我为此创建了一个非常有限的视图。剩下要做的就是将对该视图的权限实际授予该用户子集。我找到的唯一解决方案是仍然授予他们auth | User | Can change user
权限(不让他们staff
)。
我的问题是这样的:
如果我@permission_required
在该视图上使用装饰器并与auth | User | Can change user
权限合作,是否有任何其他方法可以让用户破解他们的方式来授予自己超级管理员角色(即使假设用户是高级 Django 程序员)?我说的是诸如我不知道的 API 调用之类的事情,或者类似的事情。
我想将我的代码中可能出现的错误排除在此处的范围之外。