[英]Session in Servlets
我是 Servlet 和會話的新手。
我正在使用 Servlet 和 JSP 構建網站。我正在使用 Http 連接。
我正在使用會話,在創建登錄到我的網站會話后,當我一次又一次地單擊瀏覽器后退按鈕時,我可以轉到登錄屏幕,再次單擊瀏覽器轉發選項時,我可以毫無問題地進入網站。
我的期望是當瀏覽器進入登錄屏幕時,會話應該過期,它應該再次要求輸入新密碼。
無論如何我可以用這個http連接來做到這一點。
您可以使顯示登錄 servlet 中的會話無效:
....
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
此解決方案適用於首次訪問和回訪。
如果您只想在這不是第一次訪問時使會話無效,您可以這樣做:
在登錄servlet
HttpSession session = request.getSession(false);
session.setAttribute("loggedUser", loggedUser);
在顯示登錄servlet
HttpSession session = request.getSession(false);
if (session != null) {
if (session.getAttribute("loggedUser") != null) {
session.invalidate();
}
}
請注意,如果您使用標准登錄過程,則可以在 show login 方法中使用
HttpSession session = request.getSession(false);
if (session != null) {
if (request.getRemoteUser() != null) {
session.invalidate();
}
}
一些想法是:
if
您的mySession != null
,請在執行任何其他操作之前檢查您的 login.page 。 您可以像 HttpSession mySession= request.getSession(false);
一樣獲取會話mySession= request.getSession(false);
如果您的會話不為空,則您的用戶已經登錄過一次。 在這種情況下,您可以使會話mySession.invalidate();
無效mySession.invalidate();
總的來說,它應該是這樣的:
HttpSession mySession = request.getSession(false);
if (mySession != null)
{
mySession .invalidate();
}
另一個問題可能是瀏覽器正在訪問您的頁面。
可以在此問題中找到如何在客戶端瀏覽器中禁用此功能的想法。
第三種方法可能是使用javascript 。 您可以在瀏覽器上添加一個監聽器。 anser 的問題已經在這里avalibale 。
希望有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.