2013-11-21 69 views
-1

我正在开发一个使用Java/J2EE和JSF的Web应用程序。我的应用程序包含多个页面,其中包含用户输入登录名和密码的登录页面。我的问题是,当我输入我可以访问的任何页面的url时,无需通过登录页面。如何防止这一点?访问任何页面而无需通过登录页面

+1

可能重复:http://stackoverflow.com/a/8480241/1362049 –

+0

你对你的网页的Java EE安全什么样的配置。 xml文件?您可能希望重新访问Sun的安全角色指南,同时梳理您的配置:http://docs.oracle.com/javaee/5/tutorial/doc/bncav.html – 8bitjunkie

+0

可能的重复[如何在JSF中实现登录过滤器?](http://stackoverflow.com/questions/8480100/how-implement-a-login-filter-in-jsf) –

回答

-1

我向你建议的答案不适合我。我被迫重写init()方法,如下所示:

public void init(FilterConfig filterConfig) throws ServletException { 
     String urls = filterConfig.getInitParameter("restrictedPages"); 
     StringTokenizer token = new StringTokenizer(urls, ","); 
     ArrayList<String> urlList = new ArrayList<>(); 
     while (token.hasMoreTokens()) { 
      urlList.add(token.nextToken()); 
     } 
    } 

而且我在网络中添加了下面这行代码。 XML

<init-param> 
       <param-name>restrictedPages</param-name> 
       <param-value>/login.jsp</param-value> 
      </init-param> 

我的doFilter方法是:

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("idCustomer") == null) { 
       response.sendRedirect("/login.jsp"); 
      } else { 
       chain.doFilter(req, res); 
      } 
    }