【发布时间】:2015-06-26 14:19:16
【问题描述】:
在 Django 中,我将 AdminSite 类扩展为 UserAdminSite 类。但是有一个问题:任何有权访问 UserAdminSite 的管理员也将具有“is_staff = True”状态,因此可以访问整个网站的默认管理站点。如何区分这两个管理站点的访问权限?
【问题讨论】:
-
那个管理员不是应该有完全访问权限吗?或许您应该考虑让那个 admin 成为员工,并使用组权限来区分谁可以访问任一站点。
-
UserAdminSite 的管理员应该只能访问用户和组管理,而默认管理站点的管理员可以访问该站点的所有模型。如何使用组权限来明确区分?
-
简单地说,
UserAdminSite的admin不是真正的 admin,而是在 @987654324 上拥有UserAdminSite权限的 staff @ 和Groups. -
或者,您可以使用属性自定义
User模型以区分它们在UserAdminSite或 both 上的角色,也可以覆盖is_superuser以检查它们的角色。 -
但是必须注意一个问题,如果
staff可以访问User和Groups,则可以更改自己的权限以获得完全访问权限。我认为更好的解决方案可能真的是编写自定义UserManager并实施替代方案