2017-03-03 69 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字段,現在按預期工作。我真的不知道爲什麼這會阻止自動登錄,但保存好用戶模型並且不會拋出任何錯誤。

相關問題