Backend/스프링부트
[Spring Boot] User객체 대신 MemberContext를 사용하여 로그인한 회원의 다양한 정보를 세션에 저장
Gaejirang-e
2022. 12. 19. 15:04
[MemberContext.java]
@Getter
public class MemberContext extends User {
private final Long id;
private final String profileImgUrl;
public MemberContext(Member member, List<GrantedAuthority> authorities) {
super(member.getUsername(), member.getPassword(), authorities);
this.id = member.getId();
this.profileImgUrl = member.getProfileImgUrl();
}
}
[MemberSecurityService.java]
@Service
@RequiredArgsConstructor
public class MemberSecurityService implements UserDetailsService {
private final MemberRepository memberRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Member member = memberRepository.findByUsername(username).get();
List<GrantedAuthority> authorities = new ArrayList<>();
authorities.add(new SimpleGrantedAuthority("member"));
return new MemberContext(member, authorities);
}
}
🎯 User객체를 상속한 MemberContext에 선언해준 필드는
다음과 같이 #authentication.principal을 통해 이용할 수 있다.
다음과 같이 #authentication.principal을 통해 이용할 수 있다.
<img class="w-10 h-10 object-cover rounded" th:src="@{${#authentication.principal.profileImgUrl}}" alt="">