python - 姜戈。models.py 中的哈希密码
问题描述
我的数据库中有一个触发器,可以从另一列创建密码并在当前数据库中更新它。然后我将此密码插入另一个表。问题是我的项目不需要注册表作为新页面。所以只有管理员可以添加新用户。问题听起来像:是否有机会在模型中创建哈希密码?或者从另一方面如何在models.py中创建密码填写?
模型.py
class Student(models.Model):
studentIndex = models.IntegerField()
studentName = models.CharField(max_length=50)
studentSurname = models.CharField(max_length=50, default='')
studentPhoneNumber = models.CharField(max_length=12, default='+48')
studentPesel = models.CharField(max_length=11, default='')
studentStudyMode = models.CharField(max_length=12, default='')
studentFaculty = models.CharField(max_length=30, default='')
studentSemester = models.IntegerField(default='')
studentAddress = models.CharField(max_length=255, default='')
studentMotherName = models.CharField(max_length=100, default='')
studentBirth = models.DateField(help_text='year-month-day')
studentEmail = models.EmailField(max_length=255, default='')
studentImage = models.ImageField(default='default.jpg', upload_to='profile_pics')
studentPassword = models.CharField(max_length=100, default='12345678',
help_text='Do not modify this field. Password will be generated automatically')
studentDateJoined = models.DateTimeField(default=datetime.datetime.now())
def __str__(self):
return f'{self.studentIndex} - {self.studentName} {self.studentSurname}'
在 user_student 表中触发
CREATE TRIGGER add_new_student_with_correct_password
after insert
on users_student
begin
update users_student
set studentPassword = strftime('%Y', studentBirth)
|| substr(strftime('%m', studentBirth), 2, 1)
|| strftime('%d', studentBirth)
|| substr(studentMotherName, 1, 1)
|| lower(substr(studentName, 1, 1))
where studentPassword = '12345678';
insert into auth_user(password, last_login, is_superuser, username, first_name, email, is_staff, is_active,
date_joined, last_name)
values (strftime('%Y', studentBirth)
|| substr(strftime('%m', studentBirth), 2, 1)
|| strftime('%d', studentBirth)
|| substr(studentMotherName, 1, 1)
|| lower(substr(studentName, 1, 1)),
null,
false,
new.studentIndex,
new.studentName,
new.studentEmail,
false,
true,
new.studentDateJoined,
new.studentSurname);
end;
PS 我使用的是 users_student 表和 auth_user 表。
PPS我的密码长什么样
多谢
解决方案
Django 有自己的身份验证框架,我建议你要么继承自AbstractUser,要么你可以查看 User 模型的开源代码并阅读有关密码哈希的文档,然后编写类似的东西。
推荐阅读
- react-native - 如何在 Expo React Native 中截屏并发送到 PDF
- vagrant - 无法将本地领事代理连接到在 Vagrant 中运行的服务器
- javascript - 如何按数据集索引过滤分组条形图?
- tensorflow - python 3.6 或 3.7 是否提供 nvidia tensorflow docker 映像?
- javascript - reduce() 有问题;
- groovy - 如何重新格式化文件列表中的日期名称
- winapi - 控制台应用程序在启动时执行时无法创建子进程
- c# - Azure 函数和 MongoDB 之间的循环连接失败
- python - 如何计算第 0 行“好电影”的输出?
- fabricjs - FABRICJS TEXT(调整边界框大小)