How to create a App Specific User roles and access in Django?

问题描述 投票:0回答:1

我想在 Django 中创建一个用户管理系统,我将在其中拥有多个应用程序,对于单个用户,我想为各种应用程序分配不同的角色,如下图所示。专家建议将不胜感激。 The Image shows the different roles assigned to a user for different apps

django model roles user-management
1个回答
0
投票

让我们从用户模型开始,因为你想使用自定义用户模型。我建议您使用 AbstractUser 从 django.contrib.auth.models.

继承您的用户模型
class User(AbstractUser):
    username = models.CharField(db_index=True, unique=True, max_length=255)
    email = models.CharField(max_length=50, unique=True)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    # your custom fields here 

    objects = UserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']

将此用户模型添加到您的设置文件

AUTH_USER_MODEL = 'app_name.User'

在那之后,我建议创建一个类CustomLogin并从django.contrib.auth.backends.继承ModelBackend

如果您想使用标准用户名/密码以外的自定义方案登录,请覆盖authenticate功能,否则保留它。

对于权限和角色部分,我建议您覆盖这两个函数_get_user_permissions_get_group_permissions。编写自定义逻辑以提供分配给特定用户和组的权限。你可以在这里使用你的角色作为组并编写自定义逻辑。

如果您想进一步阅读,这里是文档 - Django 中的身份验证后端

© www.soinside.com 2019 - 2024. All rights reserved.