【问题标题】:session management using filters使用过滤器的会话管理
【发布时间】:2013-06-22 08:51:33
【问题描述】:

我正在使用已编写方法的过滤器进行会话管理,并使用 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");
        }
    }

我得到字符串 cust 的空值,当我打开登录页面时,它显示这个网页有一个重定向循环。你能告诉我哪里做错了吗..

【问题讨论】:

  • 在继续 JSF 之前尝试忍受 "success" == "success"false 的事实。请改用equals。而且,是的,您自己使用调试器几乎总能指导您如何更正您的代码,或者至少可以指导您在哪些方面没有按预期工作。

标签: java jsf-2 servlet-filters


【解决方案1】:

试试这个...

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..");        
          }

【讨论】:

    猜你喜欢
    • 2014-08-24
    • 1970-01-01
    • 2012-07-23
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多