2010-06-17

[jquery] Automatyczne wylogowanie użytkownika

W jaki sposób wylogować użytkownika z programu gdy on sam tego nie zrobi? Jak go wylogować gdy zamknie okno przeglądarki lub wyjdzie z programu przechodząc na inną stronę? Jak to zrobić pod Firefox'em?
Szukam odpowiedzi na te pytania od jakiegoś czasu i znaleźć tak do końca dobrego sposobu nie mogę. W sieci też nie namierzyłem żadnego dobrze działającego rozwiązania a jak to mawiają jak czegoś nie ma w googlach to na pewno to coś nie istnieje. ;)
Mimo wszystko nie poddaję się i coś kombinuję - udało mi się znaleźć pewnie rozwiązanie, dzięki któremu ilość wylogowań użytkowników z systemu znacznie wzrosła.

W momencie gdy na utworzymy plik autologout.js w którym umieścimy:

$(document).ready(function(){
function bye(e) {
location.href = "logout.php";
}
window.onbeforeunload=bye;

$("#nazwaBody").mousedown(function(){
window.onbeforeunload=null;
});
});

a w samym kodzie strony umieścimy:

<script type='text/javascript' src='autologout.js'></script>

oraz dodamy id do body:

<body id="nazwaBody">

to każda próba wyjścia z systemu spowoduje przejście do strony logout.php. Aby skrypt nie zadziałał w momencie przejścia z jednej podstrony systemu do drugiej wyłączamy onbeforeunload gdy użytkownik kliknie gdziekolwiek w obszarze aplikacji.

Nie jest to idealne rozwiązanie (można je obejść w prosty sposób) ale mimo wszystko ilość wylogowujących się z systemu użytkowników wzrosła z 10 do 90 procent co bardzo mnie cieszy. :)

Szukam w dalszym ciągu lepszego rozwiązania tego problemu...