可能重复:
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的链接发布。 –