【发布时间】:2014-01-29 03:29:14
【问题描述】:
我能否以编程方式为组授予整个应用程序的所有权限?
当然,我可以为该组授予应用程序中每个特定模型的所有添加、更改、删除权限。但后来,如果我需要添加另一个模型,我需要更改代码,我也在其中授予权限。
因此,我需要找到一种可能性,在不知道其名称的情况下,授予应用程序内的所有模型的所有权限。
Django 文档对此没有帮助。
编辑
为您提供更多详细信息:我将 RemoteUserBackend 子类化并覆盖 configure_user 方法以将新用户添加到特定组。如果没有创建这个组,我会创建它并希望给它必要的权限:
class MyRemoteUserBackend(RemoteUserBackend):
def configure_user(self, user):
group, created = Group.objects.get_or_create(name="mygroup")
if created:
pass
# Give permissions here
user.groups.add(group)
group.save()
【问题讨论】:
-
我认为没有办法使用默认权限系统
-
我唯一想到的就是编写一个中间件来检查请求路径是否与应用程序匹配,然后检查用户权限。然而,这是一种相当模糊的方式。
-
也许有办法获取模块的所有类名?然后我可以做一些像
for classname in module: classname.addpermission... -
您可以为管理员创建子视图...虽然这有点复杂而且可能有点矫枉过正..
-
您可以编写管理命令,将组的权限与某些应用程序同步。
标签: python django permissions