2012-07-11 34 views
1

如果用户未使用servlet登录,如何重定向到登录页面。当用户没有使用Servlet登录时如何重定向到索引页?

我有一个登录页面用户登录使用,并进入主页,导航用户点击注销后,只需点击浏览器中的后退按钮现在页面转到先前访问过的页面,如何将用户重定向到使用servlet时的登录页面?

的帮助表示感谢,并继续支持

回答

2

使用下面的代码在你的JSP页面

if(userName.length()==0 || userType.length()==0){ 
     session.setAttribute("message", "Please Login"); 
     response.sendRedirect(response.encodeRedirectURL(path+"/"+destination)); 
    } 
+1

这不是一个好的方法,因为您将表示与逻辑混合在一起,这也只适用于一个jsp页面,如果您希望其他页面具有该功能,您还必须将代码复制到它们。 – Tomer 2012-07-11 10:27:43

1

在你的servlet的doGet或doPost(取称呼),你需要检查,如果用户登录(我猜你有会话检查机制),如果你看到的是,用户没有在刚刚登录使用:

response.sendRedirect("/login.jsp"); 
1

可以在验证用户会话的顶部,如果会话无效或会话不包含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); 
2

使用的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); 
    } 
1

理想情况下,你应该在过滤器来这样做。

public void doFilter(.......){ 
     if(user logged in){ 
      filterChain.doFilter(...); 
     } else { 
     response.sendRedirect("/login.jsp"); 
     } 
} 

我会建议你使用Servlet Security Feature允许关心的Web Application Security容器。

相关问题