Spring boot - Cookie 사용하기

목차

Spring boot Cookie 사용하기

쿠키 생성

메소드 파라미터로 HttpServletResponse 객체를 추가한 후 HttpServletResponse에 생성한 쿠키를 담아서 보내준다.

@PostMapping("/login")
public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response){
if(bindingResult.hasErrors()){
return "login/loginForm";
}

Member loginMember = loginService.login(form.getLoginId(), form.getPassword());

if(loginMember == null){
bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다.");
}

// 로그인 설공 처리 TODO
// 쿠키 사용하기
// 쿠키에 시간 정보를 주지 않으면 세선 쿠(브라우저 종료시 모두 종료)
Cookie cookie = new Cookie("memberId", String.valueOf(loginMember.getId()));
response.addCookie(cookie);


return "redirect:/";
}
@GetMapping("/")
public String homeLogin(@CookieValue(name = "memberId", required = false) Long memberId, Model model) {

if (memberId == null) {
return "home";
}

//로그인
Member loginMember = memberRepository.findById(memberId);
if (loginMember == null) {
return "home";
}

model.addAttribute("member", loginMember);
return "loginHome";
}

쿠키 삭제

쿠키를 지우는 방법은 쿠키 시간을 없애면 된다.

@PostMapping("/logout")
public String logout(HttpServletResponse response){
Cookie cookie = new Cookie("memberId", null);
cookie.setMaxAge(0);
response.addCookie(cookie);

return "redirect:/";
}
Share