Djangoのドキュメントには次のように記載されています。
SESSION_EXPIRE_AT_BROWSER_CLOSE設定を使用して、セッションフレームワークがブラウザーの長さのセッションを使用するか永続セッションを使用するかを制御できます。
SESSION_EXPIRE_AT_BROWSER_CLOSEがTrueに設定されている場合、Djangoはブラウザーの長さのCookieを使用します。Cookieは、ユーザーがブラウザーを閉じるとすぐに期限切れになります。ブラウザを開くたびにログインする必要がある場合は、これを使用します。
この設定はグローバルデフォルトであり、ビューでのセッションの使用で前述したように、request.sessionのset_expiry()メソッドを明示的に呼び出すことにより、セッションごとのレベルで上書きできます。
したがって、設定ファイルでSESSION_EXPIRE_AT_BROWSER_CLOSEをTrueに設定すると、実際にこれが実行されます。ブラウザを閉じたときにユーザーのセッションを期限切れにしたいので、これは良いことです。ただし、たとえば15分間操作がないと、ユーザーのセッションを期限切れにする必要もあります。上記のset_expiry()を使用すると、SESSION_EXPIRE_AT_BROWSER_CLOSEがオーバーライドされるため、ユーザーがブラウザーを閉じてから、有効期限が切れる前にブラウザーを再度開くと、セッションは引き続き有効です。私が欲しいものではありません。
さらに、set_expiry()のドキュメントには、設定された非アクティブ時間の後にセッションが期限切れになると記載されています。それは実際には真実ではありません。ユーザーがサイトをクリックしているかどうかに関係なく、有効期限が切れます。
要約すると、私がやりたいことは次のとおりです。
- ユーザーがブラウザーを閉じると、セッションが自動的に期限切れになるようにセッションを構成します。
- アクティビティで更新されるセッションの有効期限の長さを設定します。つまり、ユーザーがサイトで他のことを行うと、有効期限がリセットされます。
考え/提案?