Django不允许将变量PASSWORD_RESET_TIMEOUT_DAYS设置为少于一天。
作为一种解决方法,我正在考虑使用以下格式在密码重置激活URL中发送时间戳:
path('activate/<uidb64>/<timestamp>/<token>/', views.activate, name='activate')
使用时间戳,然后我可以手动检查时间戳是否在少于一天的时间内。
是否从安全角度考虑这样做是否不安全?
Django不允许将变量
PASSWORD_RESET_TIMEOUT_DAYS
设置为少于一天。
此问题为addressed in Django 3.1。不推荐使用PASSWORD_RESET_TIMEOUT_DAYS
,而推荐使用PASSWORD_RESET_TIMEOUT
,它需要以秒为单位的值。
同时,您可以创建自己的PasswordResetView
子类并提供执行PasswordResetView
的自己的token_generator
类。
如果要继承Django <3.1中的现有生成器,请显示what Django 3.1 will do,其中显示了需要覆盖的内容。
但是,在您担心这样做之前,可能值得阅读here is the diff,了解更长超时的安全隐患,并检查您是否真的需要较短的超时来达到目的。