9

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()のドキュメントには、設定された非アクティブ時間の後にセッションが期限切れになると記載されています。それは実際には真実ではありません。ユーザーがサイトをクリックしているかどうかに関係なく、有効期限が切れます。

要約すると、私がやりたいことは次のとおりです。

  1. ユーザーがブラウザーを閉じると、セッションが自動的に期限切れになるようにセッションを構成します。
  2. アクティビティで更新されるセッションの有効期限の長さを設定します。つまり、ユーザーがサイトで他のことを行うと、有効期限がリセットされます。

考え/提案?

4

5 に答える 5

0

ドキュメントからhttps://docs.djangoproject.com/en/1.8/topics/http/sessions/#browser-length-sessions-vs-persistent-sessions

一部のブラウザー (Chrome など) には、ユーザーがブラウザーを閉じて再度開いた後もブラウジング セッションを続行できるようにする設定が用意されています。場合によっては、これが SESSION_EXPIRE_AT_BROWSER_CLOSE 設定に干渉し、ブラウザを閉じたときにセッションが期限切れになるのを防ぐことができます。SESSION_EXPIRE_AT_BROWSER_CLOSE 設定が有効になっている Django アプリケーションをテストする際は、このことに注意してください。

于 2015-10-13T06:07:00.143 に答える
0

デフォルトでは、SESSION_EXPIRE_AT_BROWSER_CLOSEは False に設定されています。これは、セッション Cookie がSESSION_COOKIE_AGEの間ユーザーのブラウザーに保存されることを意味します。ユーザーがブラウザーを開くたびにログインする必要がないようにする場合は、これを使用します。

SESSION_EXPIRE_AT_BROWSER_CLOSEが True に設定されている場合、Django はブラウザ長の Cookie (ユーザーがブラウザを閉じるとすぐに有効期限が切れる Cookie) を使用します。ユーザーがブラウザーを開くたびにログインする必要がある場合は、これを使用します。

于 2021-09-28T12:55:29.647 に答える
0

ユーザーがブラウザーを閉じると、セッションは期限切れになります。

この要件は、SESSION_EXPIRE_AT_BROWSER_CLOSETrueに設定することで実装されています。

参照

非アクティブな期間が経過すると、セッションは期限切れになります。

SESSION_COOKIE_AGEは、秒単位のセッション Cookie の経過時間です。
デフォルト: 1209600 (2 週間、秒単位)

参照

これらのオプションをsetting/__init__.py

于 2018-07-03T10:54:14.240 に答える