2016-03-29 47 views
0

私のDjangoサイトでは、タブまたはブラウザを閉じると自動的にログアウトしたいと思う。私は、ログアウトボタンを使用せずにタブを閉じてサイトを閉じると、URLをもう一度入力した後、ユーザーがユーザー名とパスワードを再度入力するように強制的にサイトからログアウトしたことを確認したい。ユーザがタブを閉じるとログアウトする

JQueryでタブを閉じる処理方法はありますか?

ありがとうございます。

編集:onunload & onbeforeunloadイベントは、ページの再読み込み時にユーザーをログアウトさせます。

+1

これは、http://stackoverflow.com/a/13916847/2968762に役立ちます。 'localStorage'の代わりに[store.js](https://github.com/marcuswestin/store.js/)を使うことがあります。 – Abhi

+0

ありがとうございました。私はこれらのステップを実行する必要があると思います。また、「閉じるタブやブラウザ」を扱う特別なイベントがあると思っていました。 @Abhi – waterkinq

答えて

0

JavaScriptを使用することができます。onunload & onbeforeunloadイベント。これらのイベントでは、DjangoのセッションCookieを破棄します。

これらのイベントは、リンクやブラウザの[戻る]ボタンにサイトを残すときにも発生しますので、注意して、これが本当に必要な場合は2回考えてください。

+1

ユーザーがページをリロードするとどうなりますか? 私はしばらくの間、ユーザーが非アクティブであればセッションの有効期限をより長く設定すると思います。 – iamkdev

+0

あなたの答えをありがとう、私はページをリロードするとき、または私は新しいページに行く(ページをリロード)、それはまた、ユーザーをログアウトします。 – waterkinq

0

onunloadイベントにログアウトコードを追加します。

window.onunload = function() { 
    //logout code here... 
} 

JQueryでは、.unload()関数を使用できます。あまり時間がないので、Ajaxリクエストを送るかもしれないが、その結果がクライアントに届かないかもしれないことを忘れないでください。

別のトリックは小さな新しいウィンドウを開いてログアウトを処理することです。

window.onbeforeunload = function(event) { 
    //if you return anything but null, it will warn the user. 
    //optionally you can return a string which most browsers show to the user as the warning message. 
    return true; 
} 

もう一つのトリックはクライアントに数秒ごとにpingを維持することです:あなたは(あるいは少なくともユーザーに警告)ウィンドウを閉じる無効にしたい場合は

window.open("logout url","log out","height=10,width=10,location=no,menubar=no,status=no,titlebar=no,toolbar=no",true); 

は、あなたがこのコードを使用することができます。返信が返ってこない場合は、ユーザーがウィンドウを閉じたか、ブラウザがクラッシュしたか、またはチャットセッションを終了したネットワークの問題があると想定します。クライアント側では、このpingパッケージが届かない場合は、ネットワーク接続またはサーバーに問題があると想定でき、ログアウト警告を表示できます(オプションでユーザーに再度ログインさせることもできます)。

関連する問題