• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

세션에 저장된 로그인 된 정보 가져올 시 코드 질문입니다.

23.01.09 13:41 작성 23.01.09 14:18 수정 조회수 426

0

@GetMapping("/loginForm")
    public String loginForm(HttpSession session, @AuthenticationPrincipal PrincipalDetails userDetails) {
        //로그인 되어있을 때, 로그인 폼으로 이동하는 경우 메인 페이지로 이동
        if(userDetails != null) {
            System.out.println("현재 사용자: " + userDetails.getUser());
            return "redirect:/";
        }
        return "loginForm";
    }
  1. 위와 같이 사용자 정보를 가져오는 것이 맞을까요? User가 잘 출력되긴하나 정확하게 짚고 넘어가고 싶어서 질문 드립니다.

 

 

  1. 아 그리고 로그인 성공을 했을 시 세션에 로그인 정보가 저장될텐데 개발자 도구로 봤을 시 위와 같이 세션에 아무 정보도 없던데 원래 보이지 않는 것 인가요?

 

 

  1. 세션에 로그인 한 정보가 저장되는데 "내 정보 보기" 같은 기능처럼 로그인 사용자의 User엔티티가 필요할 때마다 세션에 있는 해당 로그인 정보로 DB를 조회하여 원하는 엔티티를 꺼내와서 사용하는 것이 맞을까요? 제가 이렇게 생각한 이유는 세션의 로그인 정보는 로그아웃 후 다시 로그인을 하기 전까진 변하지 않기 때문에 세션의 User와 DB의 User가 일치하지 않을 수도 있기 때문입니다.

 

미리 감사드립니다 ㅠㅠ

답변 1

답변을 작성해보세요.

0

1번 맞습니다.

2번 세션기반인지, JWT 기반인지 자세히 물어봐주셔야 답변 가능합니다.
JWT기반에면 stateless 설정으로 인해 jSessionID가 클라이언트쪽으로 전송되지 않습니다.

3번 생각하신 부분이 맞습니다. 그 부분이 염려되시면, 로그인 정보가 변경될때 세션 동기화를 해주시면 됩니다. 두가지 방법 다 됩니다.