[TIL] 73일차 _ 번쩍 팀프로젝트 #5

Seoyeon Lee·2026년 1월 16일

Today I Learned ...

오늘부터는 본격적인 개발이 시작되었다! 그리고 이제 이 프로젝트의 이름은 '번쩍'이다!


🖥️ 번쩍 팀프로젝트 #5

이번 프로젝트의 MVP는 정말 정말 필요한 기능만 가지고 시작할 예정인데, 나는 그 중에서 유저에 관한 내용을 맡았다.

이번 프로젝트에서 처음으로 인증/인가 파트를 맡아보았는데, 이번에 드디어 스프링 시큐리티 커스텀을 진행할 수 있었다!

AuthUser authUser = new AuthUser(userId, email, nickname);
JwtAuthenticationToken authenticationToken = new JwtAuthenticationToken(authUser);
SecurityContextHolder.getContext().setAuthentication(authenticationToken);

사실 이 내용은 지난 스프링 플러스 개인 프로젝트의 해설 강의를 통해 배웠던 내용인데, 그 중 일부를 우리에게 맡게 변환하였다.

@Getter
public class AuthUser {

    private final Long id;
    private final String email;
    private final String nickname;
    private final Collection<? extends GrantedAuthority> authorities;

    public AuthUser(Long id, String email, String nickname) {
        this.id = id;
        this.email = email;
        this.nickname = nickname;
        this.authorities = List.of(new SimpleGrantedAuthority("ROLE_USER"));
    }
}

이렇게 인증된 유저의 정보를 담을 AuthUser 객체를 만들었다.
원래대로라면 여기에 유저 role의 정보도 따로 저장하고, 각 유저마다 다른 role 정보를 저장해야 하겠지만, 아직까지 우리 서비스에는 권한을 따로 나누지 않았다.
사실 이후 고도화 작업에서 admin 권한을 추가할 예정이지만, 이 부분에 대해서는 나중에 추가하려고 한다.

사실 여기까지의 시큐리티 커스터마이징은 이전에도 진행했었다.
그런데, 이번에는 새롭게 시큐리티의 Authentication 인터페이스에 대한 커스텀 구현체도 생성해보았다.

public class JwtAuthenticationToken extends AbstractAuthenticationToken {

    private final AuthUser authUser;

    public JwtAuthenticationToken(AuthUser authUser) {
        super(authUser.getAuthorities());
        this.authUser = authUser;
        setAuthenticated(true);
    }

    @Override
    public Object getCredentials() {
        return null;
    }

    @Override
    public Object getPrincipal() {
        return authUser;
    }
}

사실 이것도 해설 강의에서 배운 내용을 가져온 것이지만..
이렇게도 커스터마이징을 할 수 있다는 사실을 배울 수 있었다.

하지만, 아직 스프링 시큐리티의 동작 원리에 대해 제대로 이해하지 못했다.
그래서 배운대로는 커스터마이징을 할 수 있었지만, 내가 어디에 어떤 작업을 진행한 것인지에 대해서는 여전히 이해할 수는 없었다.
급한 작업만 마무리하고, 스프링 시큐리티에 대해서 조금 더 깊이있게 조사해봐야겠다.

우리 팀이 작성한 코드는 깃허브를 통해 업로드해두었다.
GitHub 보러가기


🙃 오늘의 느낀점

본격적인 기능 개발을 시작하니 너무 너무 재미있어졌다!
오늘은 내가 맡은 유저 관련 기능 구현을 다 마무리했는데, 이제 알림에 대한 기능 구현에 도전해보려고 한다.
당장의 MVP가 끝날 때까지는 빠르게 열심히 잘 해나가야겠다.

profile
백엔드 개발자 지망생

0개의 댓글