본문 바로가기
SpringSecurity

7. 로그인 후 사용자 정보 활용하기 (마이페이지)

by Developer_TaeJong 2025. 6. 13.
로그인이 완료된 후 사용자 정보를 활용해 마이페이지, 프로필 조회/수정 기능을 구현하는 방법을 다룹니다.
Spring Security를 통해 인증된 사용자 정보를 안전하게 가져오고, HTML 템플릿과 연동하는 실전 예제를 정리합니다.

✅ 1. 로그인 사용자 정보 가져오기

Spring Security는 로그인된 사용자 정보를 SecurityContextHolder나 @AuthenticationPrincipal을 통해 쉽게 가져올 수 있습니다.

방법 ①: SecurityContextHolder

Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String email = auth.getName(); // 사용자 이메일 또는 ID

방법 ②: @AuthenticationPrincipal 사용 (추천)

@GetMapping("/mypage")
public String mypage(@AuthenticationPrincipal CustomUserDetails userDetails, Model model) {
    model.addAttribute("email", userDetails.getUsername());
    return "mypage";
}

✅ 2. 마이페이지 화면 구성 (mypage.html)

<h2>마이페이지</h2>
<p>안녕하세요, <span th:text="${email}"></span>님</p>

<a href="/mypage/edit">프로필 수정</a>

✅ 3. 사용자 정보 수정 기능

1) 컨트롤러 구현

@GetMapping("/mypage/edit")
public String editForm(@AuthenticationPrincipal CustomUserDetails userDetails, Model model) {
    model.addAttribute("email", userDetails.getUsername());
    return "mypage_edit";
}

@PostMapping("/mypage/edit")
public String updateEmail(@AuthenticationPrincipal CustomUserDetails userDetails,
                          @RequestParam String newEmail) {
    userService.updateEmail(userDetails.getUsername(), newEmail);
    return "redirect:/mypage";
}

2) 서비스 로직

public void updateEmail(String currentEmail, String newEmail) {
    UserEntity user = userRepository.findByEmail(currentEmail)
        .orElseThrow(() -> new IllegalArgumentException("사용자 없음"));

    user.setEmail(newEmail);
    userRepository.save(user);
}

3) HTML (mypage_edit.html)

<h2>이메일 변경</h2>
<form th:action="@{/mypage/edit}" method="post">
  <input type="text" name="newEmail" th:value="${email}">
  <button type="submit">변경하기</button>
</form>

✅ 4. 사용자 정보 수정 시 주의사항

  • 변경된 이메일이 이미 존재하는지 검증 필요
  • 이메일 변경 후, 세션 유지 여부 결정 (로그아웃 처리 여부)
  • 비밀번호 변경 시, 현재 비밀번호 검증 로직 추가 고려

✅ 마무리

이번 글에서는 Spring Security를 활용하여 로그인한 사용자의 정보를 가져오고, 마이페이지 기능 구현 및 정보 수정 기능을 어떻게 만들 수 있는지 살펴봤습니다.

사용자 인증 상태를 바탕으로 다양한 개인화 기능을 추가할 수 있으며, 다음 글에서는 "소셜 로그인(OAuth2) 연동" 에 대해 알아봅니다.