【发布时间】:2018-12-27 08:41:45
【问题描述】:
我已设置我的 django 后端以将激活电子邮件(带有激活链接)发送到用户在注册时提供的电子邮件地址。但最近,我收到了垃圾邮件攻击,用户(或机器人或其他)不断请求激活链接并增加了我的电子邮件服务器上的负载。为了解决这个问题,如何在对同一电子邮件地址的激活电子邮件的连续请求之间添加时间延迟/间隔?
我应该为此创建一个自定义视图吗?如果是这样,我应该修改什么视图?如何添加一个时间间隔来限制用户每 5 或 10 分钟请求 1 个激活链接?
编辑:
我发现 django-allauth 本身支持添加冷却时间的功能,但我无法让它工作。对此提出了issue,我已通过将我的相关应用设置修改为以下内容来尝试问题线程中的解决方案:
ACCOUNT_EMAIL_CONFIRMATION_HMAC = False
ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN = 300
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_LOGOUT_ON_GET = True
但是,当电子邮件尚未验证(激活)的用户尝试登录时,他们会被重定向到要求他们检查电子邮件并发送验证电子邮件的页面(这是根据this) 但上面指定的冷却时间(300 秒)不受尊重。我可以继续尝试连续登录,它只是不断重新发送激活电子邮件。我该如何解决这个问题并让冷却正常工作?
版本信息:
Python 3.5
django-allauth 0.34
【问题讨论】:
-
@NitinPawar 感谢您的建议,但 django-allauth 本身提供了我想要的确切功能 - 只是它在我的服务器中无法缩进。不知道为什么。
标签: django email django-authentication django-allauth