Django-AllAuth ACCOUNT_CONFIRM_EMAIL_ON_GET 混乱

Django-AllAuth ACCOUNT_CONFIRM_EMAIL_ON_GET confusion

我对配置变量有点困惑ACCOUNT_CONFIRM_EMAIL_ON_GET。 (docs)

如果用户点击电子邮件中的激活 link,请求 是否会 成为获取请求? (当然我错了或遗漏了什么)。

根据我的测试,如果我将 ACCOUNT_CONFIRM_EMAIL_ON_GET 设置为 False,当我从我的电子邮件中单击激活 link 时,我的帐户不会被激活。我在这里错过了什么?

如果查看源代码,您会发现从 URL 传递给视图的参数将被重定向到 post() 方法,这意味着用户不会查看确认屏幕。

https://github.com/pennersr/django-allauth/blob/master/allauth/account/views.py#L213

当用户注册时,会生成一个 url 以确认电子邮件地址。例如:

http://www.example.com/accounts/confirm-email/iq4ma0qw6fqazui7ilwd4b3vftg/

ACCOUNT_CONFIRM_EMAIL_ON_GET 设置为 True 后,用户只需单击 link 即可确认电子邮件。发生这种情况是因为通过单击 link,他将请求 url (GET),因此,allauth 会将电子邮件地址标记为已确认,因为已收到此 url 的 GET .

ACCOUNT_CONFIRM_EMAIL_ON_GET 设置为 False,当用户单击 link 时,将加载一个页面,其中将有一个按钮 "Confirm e-mail address" 或类似的东西这个。然后用户必须单击该按钮,该按钮将生成 POST 请求以确认电子邮件。发生这种情况是因为 allauth 只会在 POST 上将电子邮件地址标记为已确认,而不是在对电子邮件确认 url.

的 GET 请求上