如何在未使用Servlet记录用户时重定向到索引页面?

时间:2012-07-11 10:04:51

标签: java session servlets

如果用户未使用servlet登录,如何重定向到登录页面。

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

感谢您的帮助和持续支持

5 个答案:

答案 0 :(得分:2)

在页面顶部的jsp中使用以下代码

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

答案 1 :(得分: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);
    }

答案 2 :(得分:1)

在你的servlet doGet或doPost中(无论哪个被调用)你需要检查用户是否已登录(我猜你有会话检查机制),如果你看到用户没有登录,只需使用:

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

答案 3 :(得分:1)

您可以在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);

答案 4 :(得分:1)

理想情况下,您应该在Filter中执行此操作。

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

我建议您使用Servlet Security Feature,允许容器关注Web Application Security