首页 > 解决方案 > 在 Django 中使用自定义用户模型进行身份验证

问题描述

我在 django 中使用旧数据库。django 使用的用户身份验证方法需要更改才能使用遗留数据库数据。

数据库中有两个表 tab_users and tab_user_group

结构

tab_user id | username | password | timestamp | user_group_id | status | section_id

tab_user_groupid | user_group_name | can_view | can_edit |can_delete | dashboard_access | app_access | section_specific

user_group_idintab_user是用户idtab_user_group详细信息user_group

id在两个表中都是主键

现在需要使用这些字段来实现自定义用户身份验证。登录和用户创建。

到目前为止,我已经尝试过

from django.db import models
from django.contrib.auth.models import (  AbstractBaseUser , BaseUserManager )
class UserManager(BaseUserManager):
	def create_user(self,username,password=None,status=True):
		if not username:
			raise ValueError("Username is required.")
		user_obj=self.model(
			username = username
		)
		user_obj.set_password(password)
		return user_obj	
# Create your models here.
class TabUsers(AbstractBaseUser):
    username = models.CharField(max_length=1100)
    password = models.CharField(max_length=10000)
    user_group_id = models.IntegerField()
    status = models.IntegerField()
    timestamp=models.DateTimeField(auto_now_add=True)
    USERNAME_FIELD='username'

    def get_user_group_id(self):
    	return self.user_group_id

    @property
    def is_status(self):
    	return self.status
    
    class Meta:
        managed = False
        db_table = 'tab_users'

class TabUsersGroup(models.Model):
    user_group = models.CharField(max_length=1000)
    can_add = models.IntegerField()
    can_edit = models.IntegerField()
    can_delete = models.IntegerField()
    can_view = models.IntegerField()
        section_specific = models.IntegerField()
 
  
    class Meta:
        managed = False
        db_table = 'tab_users_group'

但是无法理解如何实现进一步的用户创建应该询问用户名,密码用户组,如果 section_specific 要求 section_id 将存储在 tab_users 中的字符串中

tab_section

id | section

标签: django

解决方案


推荐阅读