【问题标题】:How to implement multiple user types with different roles and permissions in Django?如何在 Django 中实现具有不同角色和权限的多种用户类型?
【发布时间】:2019-12-21 18:03:03
【问题描述】:

我是使用 Django 框架和 Python 编程语言进行 Web 开发的新手,我的任务是制作一个实现以下功能的迷你项目:

  1. 权限管理;
  2. 角色管理;
  3. 用户账户管理;
  4. 登录和注销;和
  5. 密码重置。

我有哪些合适的步骤来完成这个?

我已阅读有关用户身份验证和权限以及自定义用户模型的信息,但给出的示例没有我实际需要的复杂。我必须设置一个实现多个用户帐户的应用程序,其中每个用户可以有多个角色,每个角色都有不同的权限。我知道 Django 具有执行此操作的内置函数,但我想尽可能地进行自己的自定义。

我想知道创建扩展 AbstractBaseUser 的自定义用户模型是否是实现此目的的最佳选择。另外,我想知道如何自定义Django内置管理页面,例如替换或删除不必要的字段。

【问题讨论】:

    标签: python django


    【解决方案1】:

    除了扩展 AbstractBaseUser 之外的另一个解决方法是拥有另一个模型配置文件并使用 OneToOneField 关联它 或者您可以从 AbstractBaseUser 继承 3 个不同的用户模型,这不是一个好主意 最好的答案是扩展 AbstractBaseUser 如果默认的身份验证后端和权限不适合您的需要结帐(他们很可能这样做!):

    Customizing authentication in Django

    Custom users and permissions

    也结帐:

    django best approach for creating multiple type users

    How to Implement Multiple User Types with Django

    --更新--

    如果您想拥有不同的权限组,请查看:

    Permissions and Authorization

    Groups

    django.contrib.auth.models.Group 模型是一种对用户进行分类的通用方法,因此您可以将权限或其他标签应用于这些用户。一个用户可以属于任意数量的组。

    组中的用户自动拥有授予该组的权限。例如,如果 Site editors 组拥有 can_edit_home_page 权限,则该组中的任何用户都将拥有该权限。

    【讨论】:

    • 有没有办法让用户(例如管理员)可以在管理页面中创建权限?就像他/她可以创建一个新的权限一样——输入权限名称、它的描述,然后选择它是活跃的还是不活跃的?
    • 当然有,阅读 django 组文档:Permissions and AuthorizationGroups
    • @Semb 我更新了帖子,提供了有关您问题的更多信息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2021-09-11
    • 2020-07-17
    • 2012-10-09
    • 2019-05-03
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多