让我们从用户模型开始,因为你想使用自定义用户模型。我建议您使用 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 中的身份验证后端