可能重複:
Prevent user from going back to the previous secured page after logout無效會話 - Servlet的
我想知道如何在JSP和servlet無效會話。在我的網站上,當一個人登出時登錄登錄頁面,但點擊返回按鈕時,他可以訪問上一頁。我無法理解在哪裏把session.invalidate()
並進一步在那裏,當一個人退出打我應該使它無效,在login.jsp的或我的其他網頁。
我的過濾器類: -
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.annotation.WebFilter;
public class LoginFilter implements Filter{
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
if (session == null || session.getAttribute("currentSessionUser") == null) {
response.sendRedirect("Loginpage.jsp"); // No logged-in user found, so redirect to login page.
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0);
} else {
chain.doFilter(req, res); // Logged-in user found, so just continue request.
}
}
}
在web.xml中我已經寫了: -
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/ARMS/*</url-pattern>
</filter-mapping>
在我Loginpage.jsp我剛剛寫
<%
session.invalidate();
%>
好嗎?其次,我不清楚目錄結構。我把它的屏幕截圖..
我使用的Apache Tomcat 5.5服務器,所以我想我不應該把url-pattern的註釋濾波器類吧?因爲它只支持tomcat 7及以上版本。
超出無效時登錄會話('session.invalidate()')? –
@BheshGurung - 我在登錄頁面寫了session.invalidate。這是錯的嗎? 「註銷」是登錄頁面的超鏈接 – Dhruv
看起來當用戶點擊「註銷」鏈接時,您正在重定向到登錄頁面,並且在該頁面中,您首先使會話無效並呈現登錄表單。如果是這種情況,那麼你的代碼沒有問題。問題在於您的頁面正在被瀏覽器緩存,當用戶單擊後退按鈕時,瀏覽器會顯示該頁面。要處理這個問題,請按照第一條評論中BalusC的鏈接發佈。 –