我已经设置了我的django后端,将激活电子邮件(带有激活链接)发送到注册时提供的用户电子邮件地址。但最近,我收到了垃圾邮件攻击,用户(或机器人或其他什么)不断请求激活链接,并增加了我的电子邮件服务器的负载。为了应对这种情况,我如何在向同一电子邮件地址发送激活电子邮件的连续请求之间添加时间延迟/间隔?
我应该为此创建自定义视图吗?如果是这样,我应该考虑修改什么视图,以及如何添加时间间隔,例如限制用户每5或10分钟请求1个激活链接?
编辑:
我发现django-allauth本身支持添加冷却期的功能,但我无法实现这一点。有人提出了一个问题,我已经在问题线程中尝试了解决方案,将我的相关应用程序设置修改为以下内容:
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
但是,当电子邮件尚未验证(激活)的用户尝试登录时,他们会被重定向到一个页面,该页面要求他们检查电子邮件,并发送验证电子邮件(根据这一点,这是正确的行为),但不遵守上面指定的冷却时间(300秒)。我可以不断尝试登录,它只是不断地重新发送激活电子邮件。如何修复此问题并使冷却正常工作?
版本信息:
Python 3.5
django allauth 0.34
回答我自己的问题:
冷却确实有效——只是即使它将我重定向到同一个页面,来自服务器的电子邮件也只发送一次,直到冷却期结束才会重新发送。
我最初问题的答案是在我最初帖子的编辑中对应用程序设置的更改。