SESSION_COOKIE_SECURE = True
Django で設定すると、SSL 経由でのみセッション Cookie を送信するようブラウザに指示されます。ただし、認証されたユーザーが安全なページから安全でないページに移動した場合、セッション ミドルウェアは安全なセッションを認識せず (Cookie が送信されないため)、新しいセッション Cookie を設定します。その結果、ユーザーはログアウトされ、再度ログインする必要があります。
たとえば、ユーザーがセキュリティで保護された管理画面で何かを編集し、[サイトで表示] をクリックすると、SSL 以外のページに移動し、クリックして戻ると、セッションが上書きされ、認証されていないことがわかります。
この問題を解決するためにどのようなアプローチが望ましいのか疑問に思っています。
ご覧のとおり、次の解決策があります。
サイトの安全な部分と安全でない部分には、異なる (サブ) ドメインを使用します。ssl ドメインのすべてを強制的に ssl にします。(これがおそらく好ましいオプションであることはわかっていますが、現在はオプションではありません)
サイトの安全な部分と安全でない部分には、異なる django プロジェクト (および異なるセッション Cookie 名) を使用してください。nginx を使用して、適切な django プロジェクトにプロキシします。
django.contrib.sessions.middleware.SessionMiddleware
セキュア/非セキュアに応じて異なる方法でセッションを手動で処理するカスタム ミドルウェアを作成します。おそらく、URL が管理 URL であるかどうかを確認し、別の Cookie 名と Cookie パスを使用してください。SESSION_SAVE_EVERY_REQUEST = False
ユーザーが Cookie を使用するページに移動しないように設定してください。