为新用户提供默认权限或默认组
Posted
技术标签:
【中文标题】为新用户提供默认权限或默认组【英文标题】:Giving default permissions or a default group to new users 【发布时间】:2015-07-10 06:54:45 【问题描述】:默认行为似乎是新用户没有权限也没有组。但是,我不想手动授予每个新用户基本权限,并且我假设他们不必等待我这样做。
我应该如何为新用户分配默认权限?
已经提出了一些类似的问题,但对于一般情况没有明确的答案:
Django default user permissions How do I define default permissions for users in Django Guardian? Django Assign-perm w/ Post-Save Signal我使用的是python-social-auth
,所以我没有自己的创建用户表单和视图,我猜这是其他人设置默认权限的地方。我假设我需要某种类型的用户创建钩子,但不确定最干净的方法是什么。
这与创建可能授予用户的默认可能权限无关,但仅供参考,
Default permission/group data in Django In Django, how do you programmatically create a group with permissions【问题讨论】:
【参考方案1】:您可以订阅用户模型上的post_save 信号并将新创建的用户放入所需的组或添加权限。
from django.contrib.auth.models import Group
def add_to_default_group(sender, **kwargs):
user = kwargs["instance"]
if kwargs["created"]:
group = Group.objects.get(name='groupname')
user.groups.add(group)
在 django 1.8+ 上,将以下代码放入您的 AppConfig.ready()
from django.conf import settings
post_save.connect(add_to_default_group, sender=settings.AUTH_USER_MODEL)
【讨论】:
谢谢!就我而言,我想我还需要sender=settings.AUTH_USER_MODEL
。我也用过group, group_created = Group.objects.get_or_create(name='Default')
。
我是 Django 新手,我要在哪个文件中添加这些行?
apps.py
是上述行所在的文件(因此AppConfig
)以上是关于为新用户提供默认权限或默认组的主要内容,如果未能解决你的问题,请参考以下文章
如何通过为用户提供将其设为默认应用程序的选项,在设备上将应用程序设为默认电话或助理处理程序