개발 무지렁이

[Spring Boot] User객체 대신 MemberContext를 사용하여 로그인한 회원의 다양한 정보를 세션에 저장 본문

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을 통해 이용할 수 있다.
<img class="w-10 h-10 object-cover rounded" th:src="@{${#authentication.principal.profileImgUrl}}" alt="">
Comments