授予" auth |是否安全用户|可以改变用户"没有"的权限是员工"标志?

时间:2017-07-05 10:16:19

标签: django django-authentication django-1.11

我需要某些用户编辑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程序员)?我在谈论像e这样的事情。 G。 API调用我不知道或类似。

我想在我的代码中删除可能的错误。

2 个答案:

答案 0 :(得分:2)

最好创建一个custom permission,例如'can_change_user_restricted',并在自定义视图中检查该权限。

然后您不必担心将来可能会添加另一个视图/ api,或者可能设置is_staff标志,并且突然用户可以使自己成为超级用户。

答案 1 :(得分:1)

恕我直言,是的,使用您自己的类型/在用户上创建任何类型的自定义字段是非常安全的。

在我们的一个项目中,我们添加了2-3种管理员用户,这非常安全。我们添加了Maintainer,Administrator,SuperUser和两种类型的最终用户(这是要求)。我们在Django Admin中做了很多自定义工作,以便在Django Admin中列出所有类型的组和用户。

JFYI我们没有向客户提供对Django Admin的访问权限,我们提供了SuperUser登录以创建任何类型的用户来访问我们的工具。