簡體   English   中英

使用過濾器進行會話管理

[英]session management using filters

我正在使用已編寫方法的過濾器進行會話管理,並正在嘗試將驗證成功發送給過濾器來使用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");
        }
    }

我得到的String cust值為空,當我打開登錄頁面時,它顯示此網頁具有重定向循環。請告訴我我做錯了什么。

嘗試這個...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM