2017-03-03 47 views
0

我正在尝试设置allauth,以便当用户成功签约,他们将被重定向回页面他们签约前和会自动记录Django的:user.is_authenticated注册后假,allauth

。我有使用自定义帐户适配器的重定向工作。但是他们没有登录。奇怪的是,allauth会将“成功登录为X”添加到消息中。在模板中检查{% if request.user.is_authenticated %}返回false,对于is_active也是如此。我需要去和手动登录

我对allauth设置:

ACCOUNT_AUTHENTICATION_METHOD = "username_email" 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_EMAIL_VERIFICATION = "optional" 
ACCOUNT_USERNAME_REQUIRED = True 
ACCOUNT_SIGNUP_FORM_CLASS = 'main.forms.SignupForm' 
LOGIN_REDIRECT_URL = '/' 
ACCOUNT_PRESERVE_USERNAME_CASING = True 
ACCOUNT_ADAPTER = 'main.adapters.MyAccountAdapter 

adapters.py

class MyAccountAdapter(DefaultAccountAdapter): 

    def get_login_redirect_url(self, request): 
     path = request.POST.get('next', '/') 
     return path.format(username=request.user.username) 

{{ request.user }}回报AnonymousUser

forms.py

class SignupForm(forms.Form): 
    password1 = forms.CharField(widget=forms.PasswordInput) 
    password2 = forms.CharField(widget=forms.PasswordInput) 

    def signup(self, request, user): 
     reviewer = Reviewer() 
     reviewer.user = user 
     reviewer.user.email = self.cleaned_data['email'] 
     reviewer.user.password = self.cleaned_data['password1'] 
     reviewer.user.username = self.cleaned_data['username'] 
     reviewer.save() 


    def __init__(self, *args, **kwargs): 
     super(SignupForm, self).__init__(*args, **kwargs) 

尽管重定向仍然按预期工作,但调试看起来不像我的自定义帐户适配器曾运行过。

好吧,想出了重定向作品的预期,因为我提供了我的表格中的'下一个'字段,其中allauth使用。

更新

单步调试代码,看起来像request.user穿过allauth代码罚款,is_authenticatedis_active都是真实的。它传递给Django中间件,它仍然如预期的那样创建了一个响应。然后我相信有另一个重定向正在发生,并且在request对象到达用户从request.user注册的用户页面的视图已经被刷新并且现在是AnonymousUser的页面的视图时。

回答

0

好像是SignupFormdef signup问题在哪里。我删除了密码字段和self.cleaned_data字段,现在按预期工作。我真的不知道为什么这会阻止自动登录,但保存好用户模型并且不会抛出任何错误。

相关问题