要求如下:當用戶會話過期時,調用expired.htm頁面,但在與網站的第一個連接上顯示login.htm。如何檢測過期會話與沒有會話
我嘗試使用過濾器,但它不起作用,我無法告訴過濾器如何理解它是新請求還是舊請求已過期。這是我使用的代碼:
if (session.getAttribute("userProfile") == null) {
logger.debug("Session: " + (session.isNew() ? "true" : "false"));
logger.debug(request.getSession().isNew());
if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
return new ModelAndView("redirect:expired.htm");
} else {
return new ModelAndView("redirect:login.htm");
}
}
我想在這裏提出了堆棧溢出和一般的互聯網上不同的解決方案,但沒有奏效,每個請求轉到expired.htm
。
我想說的是,如果用戶發送無效的會話ID會話可以被認爲是過期的,也就是說,爲了獲得用戶將必須已經訪問過該站點的ID或者已經複製了具有會話ID的鏈接。 – Thomas
我也檢查了isNew,但它總是如此,當會話過期時(我激活一個監聽器,當會話過期時顯示我) –