我正在尝试使用Django创建一个网站,而我看到的是,如果您更改了默认的django hasher,它也会自动为登录的用户进行更改。例如,您有一个用Bcrypt编码的用户密码,而您在Django设置文件中使用Argon更改了哈希器。下次用户登录时,Django将自动使用Argon更改密码加密。基本上,我想做的是每小时自动更改哈希器。
我尝试使用线程,但是唯一的问题是我需要重新启动服务器以应用新的哈希器。
PASSWORD_HASHERS = [
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
'django.contrib.auth.hashers.Argon2PasswordHasher',
]
def randomizeHasher():
global PASSWORD_HASHERS
while(True):
hasher = PASSWORD_HASHERS
random.shuffle(hasher)
PASSWORD_HASHERS = hasher
time.sleep(20)
t = threading.Timer(0,randomizeHasher)
t.start()
答案 0 :(得分:2)
您不应在运行时更改应用程序中的设置
话虽如此,请考虑以下内容(无法对atm进行测试)
from django.conf import settings
settings.configure(PASSWORD_HASHERS=randomized_hashers)