0
我有以下的用戶在我的Django應用程序:
1.(UUID,電子郵件,姓名,地址,密碼)
2.遠程應用(UUID,名稱,生成隨機密碼)普通用戶
3.(其它類型的遠程應用程序)
Django的:自定義用戶
對於普通用戶將與網頁郵箱+密碼 用於遠程應用程序的認證將與UUID +隨機祕密與JSON索要臨時令牌
認證我沒有知道如何在Django中處理這個問題。我想從AbstractBaseUser如創建AuthBaseUser:
class AuthBaseUser(AbstractBaseUser, PermissionsMixin):
pk = models.UUIDField(primary_key=True, unique=True, default=uuid.uuid4, editable=False,)
name = models.CharField(_('name'), max_length=128, blank=False)
typ = models.CharField(max_length=16, choices=USER_TYPES, default='normaluser',)
date_joined = models.DateTimeField(_('date joined'), auto_now_add=True, default=timezone.now)
last_login = models.DateTimeField(_('last login'), auto_now_add=True)
is_active = models.BooleanField(_('active'), default=True)
然後,我想創造一個RemoteAppUser和NormalUser以1:1級的映射是這樣的:
class NormalUser(AuthBaseUser):
user = models.OneToOneField(AuthBaseUser, on_delete=models.CASCADE)
email = models.EmailField(_('email address'), unique=True)
is_superuser = models.BooleanField(_('superuser'), default=True)
#password = #not decided yet what to add here; for remote app we will have 256b of SHA256's random generated value
EMAIL_FIELD = 'email'
REQUIRED_FIELDS = AuthBaseUser.REQUIRED_FIELDS.append(['email', 'password', ])
objects = NormalUserManager()
def __init__(self, *args, **kwargs):
super(AuthBaseUser, self).__init__(*args, **kwargs)
def __str__(self):
return self.get_username()
def get_full_name(self):
return self.get_username()
def get_short_name(self):
return self.get_username()
當然,我要補充的缺省auth用戶:
AUTH_USER_MODEL = 'myauth.AuthBaseUser'
有沒有推薦的方法來處理這種不同的用戶? 注意,比如我想保存的RemoteApp的祕密作爲SHA256,但我並不需要與種子運行排列幾次等
我認爲這是與我提供的解決方案/概念相同,除了bool「is_normal」和bool「is_other」,我使用了enum「typ」值(「normaluser」,「remoteapp」 「admin」,...) – majvan