我的應用程序上有一個頁面,其中有一個持續2分鐘的AbstractAjaxTimerBehaviour。我的應用程序會話過期時間爲30分鐘(在web.xml文件中配置)。但是,我的會話不能過期,因爲這種行爲使它保持活躍狀態。我能做些什麼來解決這個問題?AbstractAjaxTimerBehaviour防止會話過期
感謝您的任何幫助。
我的應用程序上有一個頁面,其中有一個持續2分鐘的AbstractAjaxTimerBehaviour。我的應用程序會話過期時間爲30分鐘(在web.xml文件中配置)。但是,我的會話不能過期,因爲這種行爲使它保持活躍狀態。我能做些什麼來解決這個問題?AbstractAjaxTimerBehaviour防止會話過期
感謝您的任何幫助。
你可以做一些魔術,並在AbstractAjaxTimerBehavior
和嘗試HttpSession
與setMaxInactiveInterval()
和getLastAccessedTime()
一些事情。
例如,如果你是在計時器的行爲(僞代碼):
actualSessionLength = now() - getLastAccessedTime();
session.setmaxInactiveInterval(getMaxInactiveInterval() - actualSessionLength);
但它可能是在計時器行爲來不及縮短maxInactiveInterval。也許你可以早些在IAjaxCallListener
?在AjaxTimerBehavior之後,你必須再次設置30分鐘作爲inactiveTimeInterval。
我認爲這將很難實現。
你可以自行失效與另一AbstractAjaxTimerBehavior會話:
add(new AbstractAjaxTimerBehavior(Duration.seconds(300)) {
@Override
protected void onTimer(AjaxRequestTarget target) {
// Get current page
Page page = target.getPage();
// invalidate session
page.getSession().invalidate();
// Goto LoginPage
page.setResponsePage(YourLoginPage.class);
}
});