質問

私は使用しています django.contrib.auth.views.login and .logout ビュー。非常に便利で、箱から出して作られ、AAA+などを再び展開します。

私は別のログインページを使用していないため、問題は発生しますが、すべてのページにログインボックスがあります(もちろん、ユーザーがログインしない限り)。したがって、ユーザー名/パスワードの組み合わせが間違っている場合、エラーが発生します。これらの3つのパスのどれを選択する必要がありますか?

  • 成功だけでなく、エラーも次にリダイレクトする秘密の方法があります。もしそうなら、教えてください!
  • 私は自分のログインビューを書き、その間にdjangoのメッセージシステムを使用します
  • ログインページを書きます(まあ、テンプレートが欠落しているだけです)ので、Django Authシステムの完全な素晴らしさを活用できます。
役に立ちましたか?

解決

可能なソリューションの1つ(リスト内の最初の3番目の選択肢):

  1. 特別なログインページを提供する必要があります(それは定義されています registration/login.html)そして、ユーザーに不自由な場合、各通常のページにはログインフォームがあります。
  2. ユーザーが正常にログインする場合(このロジックが処理されました django.contrib.auth.views.login):
    • 通常のページの場合:ユーザーが彼女が倒れた場所からページにリダイレクトします。
    • ログインページの場合:ある場合 next PARAM、そこでリダイレクト、他のメインページにリダイレクトします。
  3. ユーザーがログインに失敗した場合:エラーが提供されたログインページをリダイレクト(または再描画)します。
  4. ユーザーが削られている場合:通常のページはログアウトへのリンクを提供します(ユーザーが別のアカウントを介して再ログインまたはログインする必要がある場合に備えて、特別なページはまだそこにあります)。

通常のページでは、ログインフォームにはこのようなものが必要です <input type="hidden" name="next" value="{{ request.path }}" />.

プロジェクト設定:

# in settings.py
LOGIN_URL = '/login'     # this should coinside with url pattern of login view
LOGOUT_URL = '/logout'   # same but for logout view
LOGIN_REDIRECT_URL = '/' # url to main page

NB:代わりに、DjangoのBuildinログアウトビューを使用しません。独自のビルを使用します。ほとんど同じですが、投稿リクエストのみでログアウトします。これにより、ユーザーはログアウトを許可しません <img src='my_site/logout' /> 悪質なコード。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top