2013-06-25 72 views
0

我正在使用过滤器编写会话管理我已经编写了方法并使用了managedbean注解我试图将验证成功发送给过滤器。使用过滤器的会话管理

@ManagedBean(name = "customer") 
@SessionScoped 
public class CustomerBean implements Serializable{ 


    public String checkValidCustomer(){ 
     FacesContext context = FacesContext.getCurrentInstance(); 
     HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest(); 
     HttpSession session = request.getSession(true); 
     Customer cust = new Customer(); 
     cust.setUsername(getUsername()); 
     cust.setPassword(getPassword()); 
     String returnValue = customerBo.checkValidCustomer(cust); 
     if(returnValue == "success"){ 
     session.setAttribute("customer", returnValue); 
     } 
     else 
     { 
      session.setAttribute("customer", null); 
     } 
     return returnValue; 

和我得到的retunValue串更迭,所以我试图为价值传递给managedBean注释。而myfilter代码等。

@WebFilter("/faces/*") 
public class LoginFilter implements Filter { 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {  
     HttpServletRequest req = (HttpServletRequest) request; 
     HttpServletResponse resp = (HttpServletResponse) response; 
     String cust = (String) req.getSession().getAttribute("customer"); 
     if (cust != null && cust.equals("success")) { 
      chain.doFilter(request, response); 
     } else { 
      resp.sendRedirect(req.getContextPath() + "/faces/default.xhtml"); 
     } 
    } 

我弦乐卡斯特越来越空值,当我打开网页的登录它显示此网页有重定向loop.Can请你告诉我哪里做错了..

+0

在继续使用JSF之前,试着承认“success”==“success”'为'false'的事实。改为坚持“等于”。而且,是的,使用自己的调试器几乎总会为您提供有关如何更正代码的指导,或者至少指导您如何按预期工作。 – skuntsel

回答

0

试这...

HttpServletRequest request = (HttpServletRequest) req; 
      HttpServletResponse response = (HttpServletResponse) resp; 
      System.out.println("Inside the filter.............." ); 
      HttpSession session = request.getSession(); 
      User u = null; 
      if(session.getAttribute("customer")!=null){ 
       u = (User) session.getAttribute("customer"); 
      }  
      if (u!= null) 
      { 
       System.out.println("user does exits.." + u.getUname());// u can see who was logged here 
       chain.doFilter(req, resp);   
      }else{ 
       System.out.println("user does exits..");   
      }