이번에는 전국멋사 연합으로 진행하는 트렌디톤에 참여했다. 개발은 기획/디자인 1, 프런트 3, 백엔드 2로 진행하였다.
우선 flow chart는 위와 같이 구현하였다.
이 중 내가 맡은 부분은 채용공고, 마이페이지, 알람 기능, 로그인, 회원가입이었다. (프로젝트 부분 빼고는 다임..)
먼저, JWT를 이용한 로그인 기능을 구현했다.
그래서 먼저 jwt를 정리해봤다. 아래의 파일은 https://jwt.io의 내용을 정리한 것이다.
jwt를 정리한 다음 이제 기존의 프로젝트에서 사용했던 코드를 이용해서 약간의 수정을 했다.
public String createToken(Authentication authentication) {
String authorities = authentication.getAuthorities().stream()
.map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(","));
log.info("auth : {}", authorities);
long now = (new Date()).getTime();
Date validity = new Date(now + this.tokenValidityMilliseconds);//만료 시간 설정
log.info("authentication name = {}", authentication.getName());
return Jwts.builder()
.setIssuer("Coy")
.setSubject("login")
.claim(AUTHORITIES_KEY, authorities)
.signWith(key, SignatureAlgorithm.HS512)
.setExpiration(validity)
.claim("username", authentication.getName())
.compact();
}
수정한 부분은 토큰을 발급하는 부분이다. 토큰의 Claim에 대해서 정리하면서 잘못된 Claim을 사용해 왔던 것 같아서 수정하였다.
그리고 이번 프로젝트에 의미가 있는 것은 우아한 테크코스에 다녀온 형과 방학동안 스프링 스터디를 진행하면서 우테코를 간접 체험하면서 여러가지 학습을 했던 것들을 직접 적용한 것이다.
이전까지는 예외처리에 대해서 주의 깊게 여기지 않았지만, 이번 프로젝트에는 예외처리 또한 진행하면서 예외처리의 중요성도 알고, 관리하는 법도 조금이나마 감을 잡은 것 같다.
기존에는 무작정 throw 되어서 uncaught되던 것들도 이제는 ControllerAdvice에 예외 Handler들을 모아서 관리하는 방법으로 진행할 수 있었다.
그리고 도메인 모델 패턴에 대해서도 알아보고, 적용하려고 노력해봤다.
아직 부족하고, 대회 막바지에는 프런트의 요구에 맞춰 급하게 수정하는 부분들이 많았어서 제대로 이루어지지 않았지만, 앞으로의 개발에 적용해보려고 한다.
또한 여지껏 지켜오지 않았던 자바 컨벤션에 대해서도 배우면서 조금씩 지켜가려고 노력하고 있다.
그리고 이번 프로젝트를 통해서 실시간 알람 기능을 위한 SSE방식에 대해서도 알아보고, pooling방식도 알아보면서 네트워크에 대한 공부의 필요성과 재미도 느낄 수 있었다.(SseEmitter를 사용하여 SSE방식으로 구현하였고, 프런트에서 컴포넌트 작업이 많아서 연결 확인은 못해봤지만 postman을 통해서는 확인하였다.)
이번 프로젝트에는 테이블마다의 연관관계 설정이 많았는데, 데이터베이스에 대한 지식이 없어서 조금 힘들었다.
다음 학기부터 데이터 베이스와 운영체제를 듣는데 여지껏 제대로 쿼리문도 모르고 써왔던 JPA를 다루기 위해서라도 이번 기회에 제대로 데이터베이스를 학습해야겠다고 느끼는 계기도 된 프로젝트다.
그리고 Swagger에 대해서도 처음 알게되어서 좋은 정보학습의 기회였던 것 같다.
마지막으로 통신 과정에서 항상 겪는 CORS에 대해서도 좀 더 공부해보고, 해결방식에 대해서도 다양하게 알아봐야겠다고 생각했다.
이번에는 @CrossOrigin어노테이션과 WebMvcConfigurer을 둘다 적용해놓았는데 급하게 구현하느라 이렇게 해놓았지만 맞는 방식인지는 학습이 필요할 것 같다.
아직 부족한 나를 더 알 수 있게 해주는 대회였던 것 같다. 부족하고, 부족하고, 부족하고, 모자란 감자의 짧은 트렌디톤 회고..
하지만,
무엇보다도 좋은 팀원들을 만나서 학습동아리나 다른 활동의 수상과 다른 프로젝트 자체를 평가하는 대회에서의 첫 수상을 할 수 있었다.
다들 고생했고, 감사하다. 팀원들과 앞으로도 좋은 인연으로 이어나가면 좋겠다.
'LikeLion🦁' 카테고리의 다른 글
おはよう~ 이번엔 일본 여행🇯🇵 (3) | 2024.02.01 |
---|---|
뛰슈 NGINX+Docker+Spring boot 설정 (0) | 2023.11.05 |
뛰슈 서버 NGINX + SSL인증하기 (1) | 2023.11.01 |
뛰슈 - 이메일 인증 (1) | 2023.09.09 |
또 떠나는 여행 이번엔 경주유🚋 (13) | 2023.09.01 |