2017-03-03 1 views
0
사용자가 성공적으로 서명 때 그들이 가입하기 전에 다시 페이지로 이동하고 자동으로 기록되도록 내가 allauth을 설정하기 위해 노력하고있어

장고 :., allauth

가입 후 허위 user.is_authenticated 사용자 지정 계정 어댑터를 사용하여 리디렉션을 작동 시켰습니다. 그러나 그들은 로그인하지 않습니다. 이상하게도 allauth는 메시지에 "Successfully signed in 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_authenticated을 진행하고 is_active 모두 사실처럼

업데이트

코드를 통해 스테핑이 보인다. 그것은 Django 미들웨어로 전달되고 예상대로 진행되며 응답이 생성됩니다. 그런 다음 다른 리디렉션이 발생하고 있으며 request 개체가 request.user에 가입 한 페이지에 대한보기를 조회 할 때까지 이제는 AnonymousUser입니다.

답변

0

문제가있는 곳은 SignupFormdef signup입니다. 암호 필드와 self.cleaned_data 필드를 제거하고 예상대로 작동합니다. 솔직히 이것이 자동 로그인을 막지 만 사용자 모델을 저장하고 오류를 발생시키지 않는 이유는 알 수 없습니다.

관련 문제