Filter自動登陸

Dao層略過數組

Domain略過cookie

Service層過session

Web層jsp

Select邏輯spa

獲取表單數據,Web—service——Dao返回用戶信息code

若是返回不爲null不然,重定向到登陸頁面。則判斷用戶是否勾選7天免登陸,若是勾選(判斷一下)。把用戶數據存入session域中,而且要建立一個cookie設置時間爲7天,保存cookie中.對象

 select代碼:blog

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //得到表單數據
        String name = request.getParameter("username");
        String password = request.getParameter("password");
        //查詢有沒有該用戶
        User u = new User(name, password);
        UserService us = new UserServiceImpl();
        User user = us.login(u);
        //用戶帳號密碼正確
        if (user != null) {
            //判斷是否勾選7天免登錄
            if ("ok".equals(request.getParameter("auto"))) {
                //數據保存到session中
                request.getSession().setAttribute("user", user);
                //保存信息到cookie中
                Cookie cookie = new Cookie("auto#"+name, password);
                cookie.setMaxAge(70 * 60);
                cookie.setPath("/");
                response.addCookie(cookie);
            }
            request.getRequestDispatcher("main.jsp").forward(request,
                    response);
        } else {
            response.sendRedirect("/autoFiler/index.jsp");
        }
    }

Filter過濾器邏輯get

Filter主要過濾index.jspit

得到cookie數組進行非空判斷,若是cookie有值則遍歷之,判斷cookie是不是保存的有username的值,若是有則進行把cookie保存的用戶名密碼取出,調用service——Dao判斷用戶是否存在,若是存在轉發到mian.jsp,並放行。若是不存在,重定向到index.Jsp登陸頁面。若是cookie數組中沒有保存該用戶的cookie,則放行。

 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
            throws IOException, ServletException {
            HttpServletRequest req = (HttpServletRequest) request;
            HttpServletResponse res = (HttpServletResponse) response;
          //1. 獲取cookie 判斷非空
             Cookie[] cookies = req.getCookies();
             if(cookies!=null){
                  //2. 遍歷cookie
                 for (Cookie cookie : cookies) {
                     //3. 判斷cookie存在 name命名的值
                    if(cookie.getName().contains("auto")){
                        String username=cookie.getName().split("#")[1];
                        String password=cookie.getValue();
                        User u=new User(username,password);
                        UserService us = new UserServiceImpl();
                        User user = us.login(u);
                          //4.若是user對象存在    自動登陸
                        if(user!=null){
                            req.getSession().setAttribute("user", user);
                            request.getRequestDispatcher("main.jsp").forward(request,
                                    response);
                            chain.doFilter(req, res);
                        }else{
                              //5.若是不存在,從新跳轉至登陸頁面
                            res.sendRedirect("/autoFiler/index.jsp");
                            chain.doFilter(req, res);
                          }
                        }
                    }
                  chain.doFilter(req, res);
                }
             }
相關文章
相關標籤/搜索