Django-AllAuth ACCOUNT_CONFIRM_EMAIL_ON_GET 混淆

4
我对配置变量ACCOUNT_CONFIRM_EMAIL_ON_GET有点困惑。(文档
如果用户点击邮件中的激活链接,请求不就必须是get请求吗?(我肯定是错了或者漏掉了什么。)
经过我的测试,如果我将ACCOUNT_CONFIRM_EMAIL_ON_GET设置为False,当我从电子邮件中点击激活链接时,我的帐户不会被激活。我在这里漏掉了什么?
2个回答

4
当用户注册时,会生成一个确认电子邮件地址的URL。例如:
http://www.example.com/accounts/confirm-email/iq4ma0qw6fqazui7ilwd4b3vftg/

ACCOUNT_CONFIRM_EMAIL_ON_GET 设置为 True 时,用户只需点击链接即可确认电子邮件。这是因为通过点击链接,他将请求该网址(GET),因此,allauth 将标记电子邮件地址已确认,因为它收到了此网址的 GET 请求。
ACCOUNT_CONFIRM_EMAIL_ON_GET 设置为 False 时,用户点击链接后将加载一个页面,上面会有一个 "确认电子邮件地址" 或类似的按钮。然后,用户必须点击该按钮以生成一个 POST 请求来确认电子邮件。这是因为 allauth 仅在 POST 而非 GET 请求到电子邮件确认网址时才标记电子邮件地址已确认。

这很有道理,但是你能解释一下第二种方法为什么比第一种更安全吗?毕竟没有人会意外地访问 http://www.example.com/accounts/confirm-email/iq4ma0qw6fqazui7ilwd4b3vftg/ - Ben
我认为这不是安全问题,而是个人偏好问题。就我个人而言,我将ACCOUNT_CONFIRM_EMAIL_ON_GET设置为True。大多数需要验证电子邮件地址的网站都在GET上进行验证,并且是安全的。 - ferrangb

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接