gpt4 book ai didi

python - 如何限制django中的 super 用户数量

转载 作者:行者123 更新时间:2023-12-01 04:02:29 24 4
gpt4 key购买 nike

在我的 django 项目中,我希望只有一个 super 用户,并且不能通过 python manage.py createsuperuser 创建更多 super 用户

这可能吗?如果可以的话怎么办?

最佳答案

任何能够运行 python manage.py createsuperuser 的人都应该能够运行 python manage.py dbshel​​l 并在数据库中手动创建 super 用户。所以,无论如何,这应该是一个值得信赖的人。

如果只有受信任的人才能添加 super 用户,那么就告诉他们不要创建多个 super 用户(尽管我想知道限制只有一个 super 用户的目的是什么)。

但是,如果您想防止使用 python manage.py createsuperuser 错误地创建多个 super 用户,您可以 override this command :

from django.contrib.auth.management.commands import createsuperuser
from django.core.management.base import CommandError

class Command(createsuperuser.Command):
def handle(self, *args, **options):
if self.UserModel.objects.filter(is_superuser=True).exists():
raise CommandError("There is no room for two, go your way!")
super().handle(*args, **options)

请注意,这不会阻止从 django 管理界面将用户设置为 super 用户。

如果你想完全无法创建两个 super 用户,可以直接在数据库层面添加约束。

另一种方法是子类化django.contrib.auth.models.User并定义:

SUPERUSER_ID = 1  # or whatever

@property
def is_superuser(self):
return self.id == self.SUPERUSER_ID

关于python - 如何限制django中的 super 用户数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36245540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com