如果用户未使用servlet登录,如何重定向到登录页面。当用户没有使用Servlet登录时如何重定向到索引页?
我有一个登录页面用户登录使用,并进入主页,导航用户点击注销后,只需点击浏览器中的后退按钮现在页面转到先前访问过的页面,如何将用户重定向到使用servlet时的登录页面?
的帮助表示感谢,并继续支持
如果用户未使用servlet登录,如何重定向到登录页面。当用户没有使用Servlet登录时如何重定向到索引页?
我有一个登录页面用户登录使用,并进入主页,导航用户点击注销后,只需点击浏览器中的后退按钮现在页面转到先前访问过的页面,如何将用户重定向到使用servlet时的登录页面?
的帮助表示感谢,并继续支持
使用下面的代码在你的JSP页面
if(userName.length()==0 || userType.length()==0){
session.setAttribute("message", "Please Login");
response.sendRedirect(response.encodeRedirectURL(path+"/"+destination));
}
在你的servlet的doGet或doPost(取称呼),你需要检查,如果用户登录(我猜你有会话检查机制),如果你看到的是,用户没有在刚刚登录使用:
response.sendRedirect("/login.jsp");
可以在验证用户会话的顶部,如果会话无效或会话不包含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);
使用的servlet,
在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);
}
理想情况下,你应该在过滤器来这样做。
public void doFilter(.......){
if(user logged in){
filterChain.doFilter(...);
} else {
response.sendRedirect("/login.jsp");
}
}
我会建议你使用Servlet Security Feature
允许关心的Web Application Security
容器。
这不是一个好的方法,因为您将表示与逻辑混合在一起,这也只适用于一个jsp页面,如果您希望其他页面具有该功能,您还必须将代码复制到它们。 – Tomer 2012-07-11 10:27:43