2013-08-01 4 views
0

Люди, как я могу узнать, когда пользователь изменил адрес и покинул страницу? Я использую JSF 1.2, и мой босс хочет эту небольшую функцию, например, он находится на странице, а затем он поместил другой адрес ctrl + L, затем www.foo.com, и когда он вернется на страницу, сессия все еще действительна, поэтому ему не нужно проходить по экрану входа в систему, как недействительно, когда это событие происходит?Как аннулировать сеанс, когда пользователь покидает страницу в jsf?

+1

Это невозможно сделать, потому что ваше приложение не знает, когда пользователь меняет URL-адрес на любой другой домен. Посмотрите здесь - http://stackoverflow.com/questions/1686687/how-can-i-get-the-destination-url-in-javascript-onbeforeunload-event для получения дополнительной информации. –

ответ

-1

Единственный способ привязать функцию JavaScript к <body onunload='...'> (http://www.w3schools.com/jsref/event_onunload.asp).

Вот пример:

<script type="application/javascript"> 
function logout() { 
    var xhr = XMLHttpRequest(); 
    xhr.open('get', '/logout', false); 
    xhr.send(null); 
} 
</script> 
.... 
<body onunload="logout()"> ... 

Таким образом, когда пользователь уезжала страницу, браузер выдаст запрос на /logout URL. На стороне сервера аннулируйте любой пользовательский сеанс, который запрашивает /logout.

+0

Это также будет выполняться, если пользователь отправит форму на текущей странице или нажимает ссылку на другую страницу на ** том же ** веб-сайте или изменяет URL-адрес на другую страницу на ** том же ** веб-сайте. Это не то, что намерен OP. Внимательно прочитайте ссылку в комментарии Адриана по этому вопросу. – BalusC

Смежные вопросы