Django Allauth注册禁止登录

时间:2018-06-17 05:16:53

标签: django django-allauth

无论如何都要阻止Allauth注册表单自动登录用户?

我在这里发现了类似的帖子但没有答案:

prevent user login after registration using django-allauth

谢谢。

2 个答案:

答案 0 :(得分:3)

您已登录,因为此行为已被烘焙到allauth的注册视图中。当表单有效时,视图会调用名为complete_signup的函数,该函数执行两项操作:

  1. 发出user_signed_up信号
  2. 身份登录用户

    要解决此问题,我们需要退出步骤1并使用简单的重定向替换步骤2.

    以下是如何做到这一点:

    1. allauth/account/views.py扩展SignupView并覆盖其form_valid方法,如下所示:
    2. class CustomSignupView(SignupView): def form_valid(self, form): # By assigning the User to a property on the view, we allow subclasses # of SignupView to access the newly created User instance self.user = form.save(self.request) try: signals.user_signed_up.send( sender=self.user.__class__, request=self.request, user=self.user, **{} ) return HttpResponseRedirect(self.get_success_url()) except ImmediateHttpResponse as e: return e.response

      尚未测试代码,但它应该正常工作。

      1. 在urls.py中添加新视图,以便替换旧的注册视图网址。

答案 1 :(得分:0)

我正在使用django-allauth 0.42.0

不需要扩展SignUp视图,可以通过以下设置来实现:

ACCOUNT_EMAIL_VERIFICATION = 'mandatory'

在您的项目settings.py文件中。