我正在尝试使用遗留,只读DB作为django.contrib.auth.models.AbstractBaseUser。问题是我的旧密码字段是SHA1而没有启动' sha1 $$' string,只是hash,所以我需要在每个密码上附加额外的字符串。
models.py
class Tuzytkownik(AbstractBaseUser):
login = models.CharField(db_column='LOGIN', max_length=50, unique=True)
haslo = models.CharField(db_column='HASLO', max_length=50)
password = 'sha1$$' + haslo
USERNAME_FIELD = 'login'
REQUIRED_FIELDS = []
显然
密码=' sha1 $$' + haslo
不工作。我怎么能搞这个?
要成为specyfic - haslo returing 40charts hash like
' cf23df2207d99a74fbe169e3eba035e633b65d94'
我需要的是
' SHA1 $$ cf23df2207d99a74fbe169e3eba035e633b65d94'
答案 0 :(得分:0)
您可以通过覆盖AbstractBaseUser.set_password()
方法(source)来完成此操作:
from django.contrib.auth.hashers import check_password
class Tuzytkownik(AbstractBaseUser):
def check_password(self, raw_password):
# prepend the sha prefix before passing the hashed password to the hash checker
return check_password(raw_password, 'sha1$$' + self.password)