【问题标题】:How to add resend interval to django activation emails?如何为 django 激活电子邮件添加重新发送间隔?
【发布时间】: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

【问题讨论】:

标签: django email django-authentication django-allauth


【解决方案1】:

回答我自己的问题:

冷却确实有效 - 只是即使它将我重定向到同一页面,来自服务器的电子邮件也只会发送一次,并且在冷却期结束之前不会重新发送。

我原来的问题的答案是在我原来帖子的编辑中对应用设置的更改。

【讨论】:

    猜你喜欢
    • 2016-03-26
    • 2016-09-15
    • 2011-02-23
    • 1970-01-01
    • 2013-04-17
    • 2012-01-01
    • 2011-01-02
    • 2012-04-27
    • 2014-01-23
    相关资源
    最近更新 更多