2010-03-31 104 views
0

我正在研究我的最後一年項目,這是一個基於Web的應用程序。我想在該項目中實現註銷功能。但不知道該怎麼做。此外,我還想實現自動註銷功能,即在20分鐘後的特定時間段後,如果用戶在此期間未執行任何操作,用戶將自動註銷。應向用戶顯示一條消息「對不起,您的會話已過期請重新登錄」。怎麼做?實現註銷功能

+0

如何註銷取決於您如何進行登錄。你應該詳細說明登錄。 – BalusC 2010-03-31 14:00:06

回答

0

你是如何處理登錄和會話的?如果其作爲簡單的會話cookie你只是到期/刪除cookie註銷

2

你可以(在servlet或response.getSession().invalidate())使用session.invalidate()

如果使用cookie註銷,你將不得不調用response.addCookie(..)與您的曲奇負壽命。

自動註銷可以通過設置會話超時來實現。在web.xml

<session-config> 
     <session-timeout>20</session-timeout> 
</session-config> 
0

我這樣做是我們的CMS上的方法是有一個的setTimeout在網頁加載時開始。這 - 在20分鐘後將用戶重定向到清除會話的頁面,並因此將用戶登出。不幸的是,這有一個副作用,即當用戶打開多個窗口時,有時一個窗口可能會在用戶激活之前達到超時期限。這會導致會話提前超時並中斷流程。

解決此問題的一種方法是爲用戶執行的每個操作(即創建內容項目,上傳圖像)保留活動ID。此活動標識保存在用戶表中,並且超時計時器(使用Javascript)可以檢查此標識以查看超時窗口是否爲最近活動的窗口。如果該窗口中的ID(從PHP變量傳遞到HTML輸出中)不匹配,則不會強制會話超時。

這是一個相當棘手的方法,而不會引入對接口的重大更改。