2016-09-14 20 views
1

何らかの理由でログイン後、ページはLOGIN_REDIRECT_URLが指し示す場所にリダイレクトされず、空白のページ/ accounts/login/code 200に残ります。したがって、ログイン後に空白のページが表示され、リフレッシュ(F5)してLOGIN_REDIRECT_URLに移動します。リフレッシュ後、私は正常にログインしました。Django&Allauthログインリダイレクトの問題

ACCOUNT_LOGOUT_REDIRECT_URLは正常に動作し、コード302を返し、空白ページなしで直接リダイレクトしますが、LOGIN_REDIRECT_URLは正しく動作しません。更新後にLOGIN_REDIRECT_URLを変更すると、変更された場所にリダイレクトされますが、これは正常に動作します。しかし、まず私は常に空のページ/ accounts/login /についています。なぜこれが起こるのか分からない。

エラーメッセージはありませんが、AllAuth LoginViewで問題は見つかりませんでした。

表示するコードはあまりありません。これは、組み込みのdjangoとallauthの機能です。これは、他のアプリケーションでは、より小さなdjangoバージョンでは成功しています。これはdjango 1.10.1の私の最初のプロジェクトです。 jqueryモバイル機能を備えた私の最初のモバイルプロジェクトです。だからここに私の設定です:

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 = '/' 

これは、ログインフォームです:

<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 

ログイン:

[14/Sep/2016 06:36:34] "POST /accounts/login/ HTTP/1.1" 200 46 
ログイン後

マニュアルリフレッシュ:アカウントのサインアップのためのallauthを使用した場合

[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 同じ問題が表示されます。 url accounts/signup /は、サインアップフォームを含む実際のテンプレートにリダイレクトするためにリフレッシュする必要がある空白のページです。私はまだそれを解決していない。

+0

このロックダウンアプリは何ですか? – e4c5

+0

Lockdownはページの前にバリアを置き、誰も干渉しないで作業できるようにします。それはこの問題に関連していない、私はそれをオフにしようとした、動作は同じです。 – Stefan

答えて

0

jquery-mobile placesトランジションCSSが一番上のコンテナに表示され、背景色が変更されます。だから、それを無効にして空白ページを取得する問題を解決しました。ページの内容はそこにありました、ちょうどjquery-mobileはそれがトランジションCSSを削除しなかっただけです。

allauthはなぜリダイレクトしませんでしたか? 1つのケースでは、jquery-mobileがajaxで処理したが表示されなかったエラーがフォームに含まれていたためです(トランジションCSSを削除してもエラーは発生しません)。

jquery-mobileで作業を中止することにしましたが、今は戻ってきますが、今はそれではありません。

関連する問題