2012-01-11 108 views
2

在我的web應用程序中,基於註釋的控制器(SPRING MVC)。我想在我的應用Spring 3.1 MVC框架會話管理

1)實施SessionManagement在應用程序中的任何頁面不應該15分鐘

2)彈出的打開方式,一種-的通知,在第10分鐘被閒置以通知用戶abt會話過期,並應給他一個選項,將會話延長到另一個15分鐘或默認情況下,應用程序應該註銷

我相信在春季MVC中我必須有一個簡單的方法春天3.1)。說得像,必須有一些方法來註釋控制器或applicationContext.xml中的一些配置。必須有某種方式!朋友們,請幫助我建議一種方式,如果你在這裏粘貼任何樣品,也會有很大的幫助。如果您可以指導我分步執行此會話管理實施,這也會非常有幫助。

回答

3

Spring MVC在這裏沒有什麼可做的。假設您將會話超時設置爲15分鐘。只需在網站上的每個頁面上放置以下JavaScript代碼,然後在頁面加載後運行它:

function expireWarning() { 
    if(confirm("Your session will expire in 5 minutes, extend?")) { 
     $.ajax('/echo/json/'); 
     setTimeout(expireWarning, 10 * 60 * 1000); 
    } 
} 

setTimeout(expireWarning, 10 * 60 * 1000); 

就是這樣!彈出10分鐘後將出現。如果用戶確認,AJAX請求將被髮送到服務器,自動擴展會話。計數器然後被重新安排在10分鐘後詢問用戶。

請注意,服務器上的AJAX目標無需執行任何操作。此調用的唯一目的是告訴容器用戶仍在使用此會話令牌。

另一個提示:如果您的網站已經在使用AJAX,您必須在每次通話後重新安排超時時間,因爲每次AJAX通話都會延長會話時間。如果用戶停留在網站上並觸發大量AJAX呼叫,則該會話會自動擴展一遍又一遍。

+0

謝謝Tomoasz。在這裏你已經建議我如何生成彈出窗口,但我的問題是如何在我的應用程序中管理整個會話。 SessionManagement正在談論 – Arun 2012-01-12 04:25:15

+1

@Arun:我的解決方案中缺少什麼?把這個簡單的代碼片段放在每個頁面上,它完全處理2)情況。 'ajax()'調用實際上擴展了會話,如果你在15分鐘內不調用服務器,會話將自動失效,從而有效地註銷用戶。 – 2012-01-12 07:55:40

+1

@阿倫你還需要什麼?請具體說明。 Spring會議沒有什麼特別之處 - 在任何地方都是一樣的。這些都是通過JSessionID進行管理的。你在說登錄/註銷嗎? – 2012-01-12 07:57:43