我正在開發一個安全的Web應用程序。我必須開發一個servlet來自定義控制它的訪問。在Java servlet中顯式管理會話以保護Web應用程序
例如,我有home.jsp廣泛打開,content.jsp依賴於URL模式。
如果它是GET content.jsp,它應該打開以顯示內容列表。 如果它是content.jsp?chapter = 1 & detail = true,它應該檢查用戶是否登錄,只有當用戶具有適當的訪問權限時,纔會授予權限,否則將其重定向到登錄頁面。
我對Java中的JSESSIONID管理感到困惑。默認情況下,任何JSP都會在沒有人的情況下自動創建一個會話。我知道我可以使用@page session =「false」來覆蓋它的默認行爲。
所以,我想的邏輯會是這樣
如果用戶(未登錄還)GET針對home.jsp,我不應該在servlet的創建的任何會議。但是JSP應該創建一個。我在HTTP請求頭中發現,它已經發送了JSESSIONID值。但是,如何在服務器端,我不會通過httpServletRequest.getSession(false)返回任何會話?
如果用戶想要獲取content.jsp?chapter = 1 & detail = true,我會將其重定向到logon.jsp。提交登錄表單後,我應該使用httpServletRequest.getSession(true)在服務器端(在返回之前)創建新會話嗎?以下任何JSP頁面訪問是否會創建新會話?
當用戶註銷時,我必須調用session.invalidate()來使其失效。但是,下面的任何JSP頁面是否會創建一個新的會話ID?
我只是通過
When should I call getSession(true) and getSession(false)? I assume per user session, I should call getSession(true) once.
Which session id should I use (trust) to identify if the user is truly logged on?
由於混淆。