Good Morning

Spring MVC에서 쿠키를 활용한 사용자 아이디 기억하기 본문

Back-End/Spring

Spring MVC에서 쿠키를 활용한 사용자 아이디 기억하기

욘쥰 2024. 7. 31. 16:18



Spring MVC 프레임워크를 사용하여 로그인 기능을 구현하면서 쿠키를 활용해 사용자 아이디를 기억하는 방법에 대해 알아보겠습니다.

1. 쿠키란?

쿠키는 웹 브라우저에 저장되는 작은 텍스트 파일로, 웹 서버와 브라우저 간의 상태를 유지하는 데 사용됩니다. 로그인 정보, 사용자 선호도 등을 저장하는 데 주로 활용됩니다.

2. 코드 분석

우리의 LoginController 클래스를 살펴보겠습니다.

@PostMapping("/login")
public String login(String id, String pwd, boolean rememberId, HttpServletResponse response) throws Exception {
    // 로그인 체크 로직
    if (!loginCheck(id, pwd)) {
        // 로그인 실패 처리
        String msg = URLEncoder.encode("id or pwd가 일치하지 않음", "utf-8");
        return "redirect:/login/login?msg=" + msg;
    }
    
    if (rememberId) {
        // 쿠키 생성 및 저장
        Cookie cookie = new Cookie("id", id);
        response.addCookie(cookie);
    } else {
        // 쿠키 삭제
        Cookie cookie = new Cookie("id", id);
        cookie.setMaxAge(0);
        response.addCookie(cookie);
    }
    
    return "redirect:/";
}



3. 쿠키 생성 및 저장

사용자가 "아이디 기억하기" 옵션을 선택한 경우 (rememberId가 true), 다음과 같이 쿠키를 생성하고 저장합니다:

Cookie cookie = new Cookie("id", id);
response.addCookie(cookie);



이렇게 하면 사용자의 브라우저에 "id"라는 이름으로 쿠키가 저장됩니다.

4. 쿠키 삭제

사용자가 "아이디 기억하기" 옵션을 선택하지 않은 경우, 기존에 저장된 쿠키를 삭제합니다:

Cookie cookie = new Cookie("id", id);
cookie.setMaxAge(0);
response.addCookie(cookie);



쿠키의 수명을 0으로 설정하면 브라우저는 해당 쿠키를 즉시 삭제합니다.

5. 저장된 쿠키 사용

저장된 쿠키는 로그인 폼에서 다음과 같이 사용됩니다:

<input type="text" name="id" value="${cookie.id.value}" placeholder="이메일 입력" autofocus>


이렇게 하면 이전에 저장된 아이디가 input 필드에 자동으로 채워집니다.

6. "아이디 기억하기" 체크박스 상태 유지

쿠키의 존재 여부에 따라 체크박스의 상태도 유지할 수 있습니다:

<input type="checkbox" name="rememberId" ${empty cookie.id.value ? "":"checked"}>



쿠키가 존재하면 체크박스가 체크된 상태로 표시됩니다.

결론:
쿠키를 활용하면 사용자 경험을 향상시킬 수 있습니다. 하지만 보안에 민감한 정보는 쿠키에 저장하지 않도록 주의해야 합니다. 이 예제에서는 아이디만 저장하고 비밀번호는 저장하지 않는 것이 좋습니다.

쿠키 사용 시 주의할 점:
1. 민감한 정보는 저장하지 않기
2. 쿠키의 유효 기간 설정하기
3. Secure 및 HttpOnly 플래그 사용 고려하기

이상으로 Spring MVC에서 쿠키를 활용한 사용자 아이디 기억하기에 대한 설명을 마치겠습니다. 쿠키를 적절히 활용하여 더 나은 사용자 경험을 제공하는 웹 애플리케이션을 만들어보세요!

이 글이 도움이 되셨나요? 추가적인 설명이 필요하다면 말씀해 주세요.