Ozz*_*man 18 python authentication django
我正在创建一个有4种类型用户的Django站点;
注意到我计划创建自定义界面而不使用内置管理界面.实现此用户结构的最佳方法是什么?我更喜欢使用Django的内置身份验证系统(管理密码salting和散列,以及会话管理等),但如果它是安全的并且生产就绪,我将愿意使用其他一些身份验证系统.
编辑:此外,我的计划是使用1个登录屏幕访问该网站,并利用权限和用户类型来确定每个用户的仪表板上可用的内容.
编辑:是否可以通过为每个用户类型使用应用程序来实现此目的,如果是这样,如何使用单个登录屏幕完成此操作.
Min*_*nnR 19
首先,您不能为项目创建多个身份验证用户群.因此,您必须使用提供的Django用户身份验证,并将其分配给多种类型的用户.Django用户在注册期间需要提供一些默认值(尝试在Django Admin中创建用户).你可以做的是创建一个名为'CustomUser'的模型并继承自AbstractUser
.这将使您的"CustomUser"模型成为项目用户的默认模型.因为您从此AbstractUser
"CustomUser"模型继承将包含原始Users模型中的每个字段,然后您可以自己添加一些字段.您还需要settings.py
在项目文件中指定原始用户模型不再是您的默认身份验证模型,它是您将用于身份验证的新"CustomUser"模型.看看以下代码是否有帮助.
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
type_choices = (
('SU', 'Super User'),
('A', 'User Type A'),
('B', 'User Type B'),
('C', 'User Type C'),
)
user_type = models.CharField(max_length=2,
choices=type_choices,
default='C')
class UserDetails(model.Model):
type = models.OneToOneField('CustomUser')
extra_info = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,您创建了CustomUser模型,用户可以在其中提供基本信息,如用户名,密码等,这是Django中的默认设置.然后选择它是哪种用户类型并将其他信息保存在UserDetails模型中,该模型也与新的身份验证模型具有OneToOne关系.您需要做的最后一件事是在settings.py
文件中.
AUTH_USER_MODEL = 'index.CustomUser'
这里index
是我的CustomUser
模型创建的应用程序.
希望这可以帮助.
归档时间: |
|
查看次数: |
11907 次 |
最近记录: |