java Filter를 사용하여 자동 로그인하는 방법

본고의 실례는 여러분에게 자바가 자동 로그인을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다.
  • (로그인 상태 기억하기) 을 선택하면 쿠키로 사용자 이름과 비밀번호를 저장합니다.선택하지 않음, 쿠키 실효..
  • 모든 페이지는 autoLoginFilter를 거쳐야 합니다.자바의 필터, 이런 종류에서 쿠키가null이 아니라고 판단하고 모든 쿠키를 얻고name가user인 쿠키를 얻어 사용자 이름과 비밀번호를 검증해야 합니다. 만약null이 아니라면user를session에 저장합니다
  • LoginServlet에서.자바에서username과password 파라미터를 획득하여dao검증을 진행합니다. 비어있지 않으면seesion에 넣고 페이지를 돌립니다
  • 쿠키 대상을 만듭니다.setpath ("/") 는 본 응용 프로그램의 모든 경로가 이 쿠키에 접근할 수 있음을 나타냅니다
  • 이미 올바르게 로그인한 사용자에게 다른 페이지를 다시 방문하면 반드시 autoLoginFilter를 거쳐야 합니다. 이때 현재 세션에 있는 사용자가null인지 아닌지를 판단합니다. null이 아니라 바로 통과합니다
  • .**login.jsp의 관련 페이지는 autoLoginFilter를 거치지 않아도 됩니다.
    
    package com.learning.web.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.learning.domain.User;
    import com.learning.service.UserService;
    
    @WebServlet("/servlet/loginServlet")
    public class LoginServlet extends HttpServlet {
     private static final long serialVersionUID = 1L;
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      String username = request.getParameter("username");
      String password = request.getParameter("password");
      String autologin = request.getParameter("autologin");
      
      UserService userService=new UserService();
      User user = userService.findUser(username, password);
      //user null, 
      if (user!=null) {
      // cookie 
      Cookie cookie=new Cookie("user", user.getUsername()+"&"+user.getPassword());
      cookie.setPath("/");
      //autologin null, 
      if (autologin!=null) {
       cookie.setMaxAge(1*60*60*24);// 
      }
      else {
       cookie.setMaxAge(0);
      }
      response.addCookie(cookie);
      request.getSession().setAttribute("user", user);
      request.getRequestDispatcher("/home.jsp").forward(request, response);
      }else {
      response.sendRedirect(request.getContextPath()+"/homeLogin.jsp");
      }
      
     }
    
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     doGet(request, response);
     }
    
    }
    
    
    package com.learning.web.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.annotation.WebInitParam;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import javax.servlet.jsp.jstl.core.Config;
    
    import com.learning.domain.User;
    import com.learning.service.UserService;
    
    @WebFilter(urlPatterns="/*",initParams={@WebInitParam(name="autologin",value="login"),@WebInitParam(name="",value="")})
    public class AutoFilter implements Filter{
    
     private FilterConfig filterConfig;
     @Override
     public void destroy() {
     }
    
     @Override
     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws IOException, ServletException {
     //  
     HttpServletRequest httpServletRequest = (HttpServletRequest) request;
     HttpServletResponse httpServletResponse = (HttpServletResponse) response;
     //  
     String uri = httpServletRequest.getRequestURI();
     String contextPath = httpServletRequest.getContextPath();
     uri = uri.substring(contextPath.length() + 1);
     //  
     String login = filterConfig.getInitParameter("autologin");
     System.out.println(" :"+login);
     //  "login"  (xxxlogin.jsp  )
     if (!uri.contains(login)) {
      HttpSession session = httpServletRequest.getSession();
      User u = (User) session.getAttribute("user");
      if (u != null) {
      System.out.println("session null");
      chain.doFilter(request, response);
      } else {
    
      //  
      // 1. cookie  User 
    
      String username = "";
      String password = "";
      UserService userService = new UserService();
      Cookie[] cookies = httpServletRequest.getCookies();
      for (int i = 0;cookies!=null&& i < cookies.length; i++) { 
       if ("user".equals(cookies[i].getName())) {
       String string = cookies[i].getValue();
       String[] values = string.split("&");
       username = values[0];
       password = values[1];
       User user = userService.findUser(username, password);
       
       //  session
       if (user != null) {
        System.out.println(" ");
        httpServletRequest.getSession().setAttribute("user", user);
       }
       }
      }
      }
     }
     // 2. 
     chain.doFilter(request, response);
     }
    
    
     @Override
     public void init(FilterConfig filterConfig) throws ServletException {
     
     this.filterConfig=filterConfig;
     
     }
    
    }
    
    이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

    좋은 웹페이지 즐겨찾기