2012-12-17 97 views
0

可能重複:
How we call logout servlet on browser close event註銷當瀏覽器關閉,onunload的JavaScript的

我希望我的網站能夠自動註銷用戶在瀏覽器關閉。我在JavaScript中使用onunload。現在,我的問題是每次用戶導航到其他頁面時,都會註銷用戶。我想要的只是在瀏覽器關閉時註銷。

這裏是我的代碼:

<script type="text/javascript"> 

window.onbeforeunload = confirmExit; 
window.onunload = logout; 

function confirmExit() { 
    return "Are you sure you want to leave?"; 
} 

function logout() { 
    window.location = '<?php echo WEBSITE_URL ?>?logout=true'; 
} 

</script> 

希望有人能幫助我儘快!

+1

[我們如何在瀏覽器關閉事件上調用註銷servlet](http://stackoverflow.com/questions/3986430/how-we-call-logout-servlet-on-browser-close-event)以及的[此](http://stackoverflow.com/questions/12768281/detecting-user-logout-on-browser-close-in-django)和[此](http://stackoverflow.com/questions/5515416 /當瀏覽器關閉時自動註銷)以及許多其他功能。在提問前請使用搜索工具。 – Quentin

回答

1

在你的情況下,它最好發送一個ajax請求做任務,而不是重定向用戶註銷。

同時發送它onbeforeunload

或者更好的想法將被添加cookie用戶上次活動。並檢查每一頁加載的最後一項活動是否超過所需限制服務器重定向到登錄頁面清除會話。

+0

onbeforeunload,你需要發送一個請求sjax,順便說一句。 – Bergi

+0

是完整的,一個cookie不處理會話的壽命,因爲它可以通過客戶端進行修改以安全的方式。 – thomaux

+0

@Anzeo:除非它由服務器簽名。 – maaartinus

0

當窗口關閉時,我認爲不可能在javascript中檢測到。正如你發現onunload事件沒有這個信息爲什麼頁面被卸載:如果用戶關閉窗口或導航到不同的頁面。

更重要的是,用戶可以通過在地址欄中輸入網址來導航到不同的頁面 - 在這種情況下,您可能還想'註銷他'。

實現它的最好方法是在會話中有超時。如果瀏覽器崩潰,這將會工作。