为新用户提供默认权限或默认组
Giving default permissions or a default group to new users
默认行为似乎是新用户没有权限也没有组。但是,我不想手动授予每个新用户基本权限,而且我假设他们不想等待我这样做。
我应该如何为新用户分配默认权限?
有人问过一些类似的问题,但一般情况下没有明确的答案:
- 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
您可以在用户模型上订阅 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)
默认行为似乎是新用户没有权限也没有组。但是,我不想手动授予每个新用户基本权限,而且我假设他们不想等待我这样做。
我应该如何为新用户分配默认权限?
有人问过一些类似的问题,但一般情况下没有明确的答案:
- 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
您可以在用户模型上订阅 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)