2016-09-14 4 views
1

로그인 후 어떤 이유로 LOGIN_REDIRECT_URL이 가리키는 곳으로 리디렉션되지 않지만 빈 페이지/accounts/login/code 200에 남아 있습니다. 따라서 로그인 후 빈 페이지가 표시되고 내 LOGIN_REDIRECT_URL에 새로 고침 (F5). 새로 고침 후 성공적으로 로그인했습니다.Django & Allauth 로그인 리디렉션 문제

ACCOUNT_LOGOUT_REDIRECT_URL이 제대로 작동하고 코드 302를 반환하고 빈 페이지없이 직접 리디렉션되지만 LOGIN_REDIRECT_URL은 (는) 그렇지 않습니다. 새로 고침 후 LOGIN_REDIRECT_URL을 변경하면 변경된 위치로 리디렉션됩니다. 정상적으로 작동합니다. 하지만 처음에는 항상 빈 페이지/accounts/login /에 머물러 있습니다. 왜 이런 일이 일어나는지 알 수 없습니다.

AllAuth LoginView에서 오류 메시지가 나타나지 않았습니다.

표시 할 코드가 많지 않습니다. 이것은 내장 django와 저의 django 버전의 다른 응용 프로그램에서 successfuly 사용 된 allauth 기능입니다. 이것은 장고 1.10.1이 설치된 첫 번째 프로젝트입니다. jquery 모바일 기능을 갖춘 첫 번째 모바일 프로젝트이기도합니다.

<a class="login_link" href="#popupLogin" data-rel="popup" data-position-to="window" class="" data-transition="pop">Login</a> 
<div data-role="popup" id="popupLogin" data-theme="a" class="ui-corner-all"> 
<form id="login_form" method="POST" action="{% url 'account_login' %}"> 
    {% csrf_token %} 
    <div style="padding:10px 20px;"> 
     <h3>Please sign in</h3> 
     {{loginForm.login}} 
     {{loginForm.password}} 
      {% if redirect_field_value %} 
       <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> 
      {% endif %} 
      <button type="submit" class="ui-btn ui-corner-all ui-shadow ui-btn-b ui-btn-icon-left">Sign in</button> 
    </div> 
</form> 
{% if loginForm.errors %} 
    {% for field in loginForm %} 
     {% for error in field.errors %} 
      <div class="alert alert-danger"> 
       <strong>{{ error|escape }}</strong> 
      </div> 
     {% endfor %} 
    {% endfor %} 
    {% for error in loginForm.non_field_errors %} 
     <div class="alert alert-danger"> 
      <strong>{{ error|escape }}</strong> 
     </div> 
    {% endfor %} 
{% endif %} 

</div> 

그리고 여기가 터미널에 무슨 :

로그 아웃 :

[14/Sep/2016 06:36:18] "POST /accounts/logout/ HTTP/1.1" 302 0 
[14/Sep/2016 06:36:24] "GET/HTTP/1.1" 200 12295 

로그인 :

DEBUG = True 

ALLOWED_HOSTS = ['*'] 
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

INSTALLED_APPS = [ 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 

'django.contrib.sites', 
#'django.contrib.flatpages', 

'appconf', 
'avatar', 
'myApp', 

'allauth', 
'allauth.account', 
'allauth.socialaccount', 
'allauth.socialaccount.providers.facebook', 
'allauth.socialaccount.providers.google', 

'django.contrib.admin', 

'lockdown', 

] 

MIDDLEWARE_CLASSES = [ 
'django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
#'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 
'lockdown.middleware.LockdownMiddleware', 

] 

LOGIN_REDIRECT_URL = '/' 
ACCOUNT_LOGOUT_REDIRECT_URL = '/' 

이는 로그인 양식입니다 : 그래서 여기 내 설정이다

[14/Sep/2016 06:36:34] "POST /accounts/login/ HTTP/1.1" 200 46 
로그인 후 6,

수동 새로 고침 :

[14/Sep/2016 06:37:00] "GET /accounts/login/ HTTP/1.1" 302 0 
[14/Sep/2016 06:37:00] "GET/HTTP/1.1" 200 11434 

UPDATE 계정 가입에 대한 allauth을 사용할 때 같은 문제가 나타납니다 . url accounts/signup /는 가입 양식이 포함 된 실제 템플릿으로 리디렉션하기 위해 새로 고쳐 져야하는 빈 페이지입니다. 나는 아직 해결하지 못했다.

+0

이 잠금 프로그램은 무엇인가요? – e4c5

+0

Lockdown은 아무도 간섭하지 않고 작업 할 수 있도록 장벽을 페이지 앞에 둡니다. 그것은이 이슈와 관련이 없으며, 나는 그것을 꺼버 렸습니다. 행동은 같습니다. – Stefan

답변

0

상단 컨테이너에 jquery-mobile places 전환 CSS를 표시하고 배경색을 변경합니다. 따라서 빈 페이지를 가져 오는 문제가 해결되었습니다. 페이지 콘텐츠가 있었는데 jquery-mobile에서 전환 CSS를 제거하지 않았습니다.

왜 allauth가 리디렉션하지 않았습니까? 한 가지 경우에는 jquery-mobile이 ajax로 처리했지만 표시하지 않은 오류가 양식에 있었기 때문에 (전환 CSS를 제거한 후에도 해당되지 않음).

jquery-mobile로 작업을 중단하기로 결정했는데, 지금은 되돌릴 수는 있지만 지금은 아닙니다.