2016-10-28 10 views
0

ユーザーが自分のサイトから別のサイトに移動したり、ブラウザを閉じると、Djangoでセッションを閉じることができます。ユーザーが別のサイトを移動したとき、またはブラウザが終了したときにDjangoを閉じるセッション

+0

この回答を確認し、問題が解決するかどうかを確認してください。 http://stackoverflow.com/a/28755357 –

+0

jqueryなしで可能ですか? –

答えて

1

質問とコメントの両方から、JSの助けを借りずにユーザーがサイトを終了したときに、セッションを「終了」したいようです。答えは、あなたが "近い"をどのように定義するかによって異なります。

根本的な問題は、HTTPがステートレスであることです。サーバーに入る各要求は、他の要求との関係なく、完全に独立した要求です。つまり、状態が存在しないことを意味します。状態は非常に便利なので、セッションを使って状態を追加するためにHTTPをハックします。アイデアは、ブラウザがサーバ上に格納されているいくつかの状態に何らかの識別子を送信し、サーバがその状態を取得してリクエストにいくつかのコンテキストを与えることを可能にすることです。キーは、ブラウザがそのデータを送信していることです。言い換えれば、ある時点のブラウザがリクエストの送信を停止すると(たとえば、ユーザーがタブを閉じるなど)、サーバーはそのことを決して知らないでしょう。したがって、セッションをサーバーから削除するように「クローズ」セッションを定義した場合、JSヘルプなしでは不可能です。

あなたが達成しようとしているのは、あなたがサイトを終了したときにユーザをログアウトさせることですが、これは部分的にDjangoでSESSION_EXPIRE_AT_BROWSER_CLOSEの設定を使用して行うことができます。 Hereはそれに関する追加のドキュメントです。ここでのアイデアは、Djangoがセッションクッキーをブラウザに戻すと、ブラウザが閉じられたときにセッションクッキーが期限切れになることを示します。この場合、ブラウザが閉じられると、ブラウザ自体がセッションを無効にするので、ユーザは次の訪問時に新しいセッションを作成することになる。これは部分的な解決策です。なぜなら、セッションはサーバーに保存され、ブラウザが完全に閉じられているとしか動作しないと思います。古いセッションを蓄積するサーバの問題を軽減するため、Djangoは定期的に実行する管理コマンドclearsessionsを提供しています。

関連する問題