• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

이해가 잘 되지 않습니다

24.03.16 19:12 작성 조회수 181

-1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
@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){ // 쿠키가 있어도 db에 없는 경우 return "home"; } model.addAttribute("member", loginMember); return "loginHome"; }

 

홈 컨트롤러에서 로그인을 아예 한 적이 없으면 쿠키가 없어서 return "home"인 게 이해가 되는데 두 번째에 쿠키가 있어도 회원이 db에 없는 경우가 무슨 상황인지 잘 이해가 되지 않습니다.

쿠키가 있으려면 회원 로그인을 해야 하는데 회원이 db에 없을 수 있는지 궁금합니다

답변 1

답변을 작성해보세요.

0

jiyoo님의 프로필

jiyoo

2024.03.16

구체적으로 쿠키 셋팅과 DB 회원 저장을 어떻게 구현했느냐에 따라 달라지긴 하겠습니다만, 몇가지 시나리오를 생각해 볼 수는 있을 것 같아요.

 

<가상 시나리오>

1) 사용자가 로그인 후 회원 탈퇴를 함

2) 서버 사이드에서는 회원 탈퇴 시 DB에서 해당 레코드를 삭제 또는 수정해서 조회되지 않도록 하고, 기존 쿠키를 만료시켜주는 로직은 따로 구현하지 않음

 

이런 상황이라면 쿠키는 남아있겠으나, 해당 ID로 회원을 조회할 경우 DB로부터 null이 반환되는 것이 가능하지 않을까 생각을 해봅니다.



여담이지만, 질문을 읽을 사람이 보다 명확하게 알아볼 수 있도록 코드를 코드블록 안에 넣어주시면 더 좋을 것 같습니다 😀

아래는 예시입니다.

    @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";
    }