不确定 Django 自定义用户组和权限的方法

Posted

技术标签:

【中文标题】不确定 Django 自定义用户组和权限的方法【英文标题】:Unsure of approach for Django custom user groups and permissions 【发布时间】:2021-05-25 23:20:32 【问题描述】:

我正在创建我的第一个 Django (ver 3.1) 网站,它只是一个带有主页和商店页面的博客。我想创建自定义用户组,为我的博客定义特定角色(具有唯一权限)。

这些组是:

读者 - 匿名观众和新帐户;仅拥有所有内容的读取权限 作者 - 需要登录;具有读取和创建权限;仅限自己的内容的编辑和删除权限 版主 - 需要登录;拥有所有内容的所有 CRUD 权限 管理员 - 需要登录,拥有所有权限(超级用户)

默认情况下,所有新用户都在 Reader 组中。 作者可以手动分配,也可以最终通过在线表格申请来确定资格。 ModeratorAdmin 当然是手动分配的。

我正在通过可能的未来发展来解决这个问题,例如允许用户组轻松扩展到其他网站页面。例如,Author 用户适用于所有商店商品的 5% 折扣等

哪种创建用户组的方法最适合我的情况?我已经看到它在 Django 管理面板中完成,并通过扩展 AbstractBaseUser 和 UserBaseManager 类创建自定义用户模型。

【问题讨论】:

【参考方案1】:

我认为扩展 AbstractUser 模型是一个好方法。这样的事情怎么样?

class CustomUser(AbstractUser):
    "Define the extra fields related to User here"""

    first_name = models.CharField(_('First Name of User'), blank=True, max_length=20)
    last_name = models.CharField(_('Last Name of User'), blank=True, max_length=20)

    #  - - - Some more User fields according to your need s

    class Meta:
        permissions = (("can_read_content", "To provide read facility on all content"),
       #---------------------
                       )

【讨论】:

在这种方法中,我是否会为每个用户类型定义 CustomUser 类,比如 CustomUserReader 类?或者我会为每个用户类型实例化这个 CustomUser 类吗?

以上是关于不确定 Django 自定义用户组和权限的方法的主要内容,如果未能解决你的问题,请参考以下文章

切换到 Django 自定义用户模型、组和权限

按用户角色和 id 过滤的 Django 自定义权限

Django自定义Auth模块方式

Django自定义Auth模块方式

Django - 向用户授予自定义权限

Django 用户在创建/权限提升方面的权利