Python 洗牌;密码散列器“;每小时Django

Python 洗牌;密码散列器“;每小时Django,python,django,hash,password-encryption,Python,Django,Hash,Password Encryption,我正在尝试用Django创建一个网站,我看到,如果您更改默认的Django哈希程序,它也会自动为登录的用户更改它。例如,您有一个使用Bcrypt编码的用户密码,并且您在Django设置文件中使用Argon更改哈希器。下次用户登录时,Django将自动用Argon更改密码。基本上我想做的是每小时自动更改哈希程序 我尝试使用线程,但唯一的问题是需要重新启动服务器以应用新的哈希程序 PASSWORD_HASHERS = [ 'django.contrib.auth.hashers.BCryptSHA2

我正在尝试用Django创建一个网站,我看到,如果您更改默认的Django哈希程序,它也会自动为登录的用户更改它。例如,您有一个使用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()
您不应该在运行时更改应用程序中的设置

资料来源:

也就是说,考虑以下问题(无法测试)

  • 创建一个管理命令,使用以下命令更改设置:
  • 创建cron作业以每小时运行一次命令
  • 您不应该在运行时更改应用程序中的设置

    资料来源:

    也就是说,考虑以下问题(无法测试)

  • 创建一个管理命令,使用以下命令更改设置:
  • 创建cron作业以每小时运行一次命令

  • 用Crontab?我已经试过了,但我不知道如何使用itCheck:和Crontab?我已经试过了,但我不知道如何使用itCheck:
    from django.conf import settings
    
    settings.configure(PASSWORD_HASHERS=randomized_hashers)