2

認証されたユーザーがURLのページにリダイレクトされている間、正常に機能する簡単なログインを行いました:

url(r'^(?P<user_id>\d+)/$', 'auth.views.main', name='main'),

今、私はを使用しようとしていますLoginRequired-Middlewareが、使用してログインしようとすると、次のようになります。

"POST  /login/ HTTP/1.1" 302 0
"GET   /1000/  HTTP/1.1" 302 0

最初のログインページにとどまります。私はそれを行うために一般的なスニペットを使用します

LOGIN_URL = ( '/login/' )

何がうまくいかないのですか?

4

1 に答える 1

1

残念ながら、提供されたコードはエラーを特定するには不十分であるため、ポインターのみを提供できます。

  • 以前の実験から、HTTP 302 REDIRECT サイトを実際にまだキャッシュしていないことを確認してください。役立つヒントについては、こちらを参照してください。
    ブラウザのキャッシュをリセットします。Chrome を使用している場合は、CTRL+SHIFT+J を押して (開発者ツールを起動して)、上部のナビゲーション URL バーの横にある [リロード] ボタンを長押しすると、いくつかのキャッシュ クリアランス オプションを取得できます。

    Firefox については、これらの役立つ提案も参照してください。

    1. http://support.mozilla.org/es/questions/848678

    2. https://superuser.com/questions/23134/how-to-turn-off-firefox-cache

  • Django をバージョン <1.3.x からアップグレードしましたか? パスワードが新しい default-Hasher で書き換えられたため、ログインできなくなったという状況に遭遇しました。データベース内のauth_users- テーブル内で、パスワード-hasher の一貫性を直接確認してください。たとえば、SHA1 パスワード ハッシュは次で始まりますsha1...

  • 元のプロジェクトのプライマリ Hasherを一番上に保持する順序でリストを設定してPASSWORD_HASHERSください 。つまり、最初にユーザー パスワードをハッシュするために使用されたハッシュ アルゴリズムです。settings.py

  • はプロジェクトurl(r'...'...)のルートにありますか?urls.py

  • のセクションに'django.contrib.auth'リストされていることを確認し(そうでない場合はエラーが発生するはずです)、事前にロードする必要があるアプリが実際に一番上に配置されていることを確認してください。INSTALLED_APPSsettings.py

  • スニペットのコメントに従って settings.pyの のセットアップを確認しTEMPLATE_CONTEXT_PROCESSORS、Django バージョンの と互換性があることを確認してください。MIDDLEWARE_CLASSESSessionMiddleware

  • リダイレクトを行うプロジェクト内のすべてのコードラインを確認します。

以下を確認します。

    from django.views.generic.base import RedirectView

    url(r'^.*$', RedirectView.as_view(url='<url_to_view>', permanent=False), name='index')

また

    from django.http import HttpResponsePermanentRedirect
    HttpResponsePermanentRedirect('url...')

Django 1.5 では、一般的なビュー パラダイムに従って 、非推奨のredirect_to関数が に置き換えられていることに注意してください。RedirectView

リダイレクト(...)

    url('^pattern/$', lambda _: redirect('/redirecttourl/'))
    url(r'^pattern$', redirect('example.com')),
    url(r'^pattern$', redirect(projectname.views.home)),
    (r'^accounts/profile/$', 'redirect_to', {'url': 'generic_account_url'}),
    HttpResponseRedirect(....)
    HttpResponseRedirect(request.META.get('HTTP_REFERER','/'))
  • Django の組み込み認証ログイン ページには、nextクエリ文字列が含まれています。next=ログイン後に戻るページを決定します。

参照: http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.decorators.login_required

  • サーバーの HTTP アクセス ログを確認します。リダイレクト後のログイン サイトのコンテンツ サイズは、リダイレクト前のログインと同じですか?

ログイン プロセス中に HTTP アクセス履歴全体を提供するのに役立ちます。リダイレクト ループでハングしないため、前述の 2 つよりも多くの HTTP が続く必要があります。

于 2013-08-25T08:42:26.413 に答える