首页 > 解决方案 > Django Allauth 注册阻止登录

问题描述

有没有办法阻止 Allauth 注册表单自动登录用户?

我在这里找到了一个类似的帖子,没有答案:

使用 django-allauth 注册后阻止用户登录

谢谢你。

标签: djangodjango-allauth

解决方案


您已登录,因为此行为已融入到 allauth 的注册视图中。当表单有效时,视图调用被调用的函数complete_signup来做两件事:

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

为了解决这个问题,我们需要离开第 1 步,用简单的重定向替换第 2 步。

这是如何做到的:

  1. 扩展 SignupViewallauth/account/views.py并覆盖其form_valid方法,如下所示:

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 中连接您的新视图,以便替换旧的注册视图 url。

推荐阅读