如果用户未使用 servlet 登录,如何重定向到登录页面。
我有一个登录页面,用户使用它登录并进入主页,导航后用户点击注销并在浏览器中点击后退按钮现在页面转到以前访问过的页面,使用时如何将用户重定向到登录页面小服务程序?
感谢您的帮助和持续的支持
在页面顶部的 jsp 中使用以下代码
if(userName.length()==0 || userType.length()==0 ){
session.setAttribute("message", "Please Login");
response.sendRedirect(response.encodeRedirectURL(path+"/"+destination));
}
使用小服务程序,
在 web.xml 中
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>com.java.web.authentication.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>/faces/manage/*</url-pattern>
</filter-mapping>
在身份验证过滤器中,
if (visit == null) {
servletContext.log("Redirecting to the login page.");
session.setAttribute(Constants.ORIGINAL_VIEW_KEY, requestPath);
String loginView = httpRequest.getContextPath() +
httpRequest.getServletPath() +Constants.LOGIN_PAGE;
httpResponse.sendRedirect(loginView);
} else {
filterChain.doFilter(servletRequest, servletResponse);
}
在您的 servlet doGet 或 doPost (无论哪个被调用)中,您需要检查用户是否已登录(我猜您有会话检查机制),如果您看到用户未登录,只需使用:
response.sendRedirect("/login.jsp");
您可以验证用户会话Servlet
,如果会话无效或会话不包含 userId(如果在会话创建时您在会话属性中设置),则将其重定向到login
页面。要禁用,您需要使用以下代码清除缓存jsp/servlet
。
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
理想情况下,您应该在 Filter 中执行此操作。
public void doFilter(.......){
if(user logged in){
filterChain.doFilter(...);
} else {
response.sendRedirect("/login.jsp");
}
}
我建议您使用Servlet Security Feature
允许容器照顾的Web Application Security
.