在确认电子邮件时阻止django-allauth登录

时间:2014-02-02 15:41:39

标签: django django-allauth

我正在使用django-allauth来处理我网站中的用户注册。我注意到一种奇怪的行为。假设我在网站上注册了一个新用户。该用户收到一封包含点击链接的新电子邮件。当用户点击该链接时,它会将他带入确认页面。用户单击确认按钮并确认用户电子邮件。

问题在于,作为副作用,用户也登录了。我不希望这样。这仅在我第一次访问该页面时才会发生。如果我再次访问该页面并确认电子邮件,则用户不会自动登录。

我的问题是即使在他第一次确认电子邮件时,如何阻止用户登录。我搜索了文档,但无法找到任何设置来阻止这种情况。另外我查看了ConfirmEmailView的源代码,除了手动注释这一行之外,我看不到关闭此行为的方法

resp = self.login_on_confirm(confirmation)

更新

我想我找到了问题的解决方法,而不必分叉或其他什么。我只是在我自己的视图文件中复制了该类,试图确保我还导入了所需的所有其他依赖项。然后我刚刚在登录时删除了该调用以及它调用的函数。我希望我做得很好。在我的urls.py之后,就在allauth的导入之前,我复制了用于confirm-email的行并将其重定向到我自己的视图。现在它看起来像这样

url(r'^accounts/confirm-email/(?P<key>\w+)/$', 'userprofile.views.confirm_email',
                       name="account_confirm_email"),

似乎有点hackish但似乎运作良好。我希望有人能提出更好的解决方案。

1 个答案:

答案 0 :(得分:0)

查看here中的ConfirmEmailView,只有LOGIN_ON_EMAIL_CONFIRMATION为true时,登录才可以完成。因此,为防止登录时确认电子邮件,应在settings.py中将LOGIN_ON_EMAIL_CONFRIMATION设置为false