Cookie 더 알아보기

jooog·2022년 3월 23일
0

스프링

목록 보기
16/26

🥯 쿠키 읽어오기

Cookie[] cookies=request.getCookies();
//request.getCookies로 쿠키 정보를 읽어온다.
//쿠키가 여러개일 수 있으니 배열로 받는다.

for(Cookie cookie:cookies) {
  String name = cookie.getName();
  String value = cookie.getValue();
  
  System.out.printf("[cookie]name=%s, value=%s%n", name, value);

}

🥯 쿠키 생성과정 살펴보기(Controller)

@Controller
@RequestMapping("/login")
public class LoginController {

    @GetMapping("/login")
    public String loginForm(){
        return "loginForm";
    }

    @PostMapping("/login")
    public String login(String id, String pwd, String rememberId, HttpServletResponse response) throws Exception{

        if(!loginCheck(id,pwd)){

            String msg = URLEncoder.encode("id 또는 pwd가 일치하지 않습니다.", "utf-8");
            return "redirect:/login/login?msg="+msg;
        }
        //아이디와 패스워드가 일치하면 쿠키를 생성하고 홈으로 이동한다.
        Cookie cookie = new Cookie("id", id); //쿠키 생성
        response.addCookie(cookie); //응답에 쿠키를 저장한다.
        return "redirect:/"; //홈으로 이동한다.
    }
    private boolean loginCheck(String id, String pwd){
        return "user".equals(id) && "1234567".equals(pwd);
    }
}

🥯 id,password 값에 따라 쿠키 생성 및 삭제

위의 코드를 리팩토링해본다.

@Controller
@RequestMapping("/login")
public class LoginController {

    @GetMapping("/login")
    public String loginForm(){
        return "loginForm";
    }

    @PostMapping("/login")
    public String login(String id, String pwd, String rememberId, HttpServletResponse response) throws Exception{

        if(!loginCheck(id,pwd)){

            String msg = URLEncoder.encode("id 또는 pwd가 일치하지 않습니다.", "utf-8");
            return "redirect:/login/login?msg="+msg;
        }

        if(rememberId){
            //아이디와 패스워드가 일치하면 쿠키를 생성하고 홈으로 이동한다.
            Cookie cookie = new Cookie("id", id); //쿠키 생성
       } else {
            //쿠키 삭제
            Cookie.setMaxAge(0); //쿠키 삭제
            response.addCookie(cookie); //응답에 쿠키를 저장한다.

        }
        return "redirect:/"; //홈으로 이동한다.
    }
    private boolean loginCheck(String id, String pwd){
        return "user".equals(id) && "1234567".equals(pwd);
    }
}

0개의 댓글