Skip to content

WaffleStudio23-5/seminar-2025-springboot-assignment

Repository files navigation

Seminar-2025-springboot-assignment

이번 한 학기 동안 에브리타임 클론코딩을 주제로 과제를 진행합니다. 세미나를 따라가면 게시글, 댓글, 좋아요 등 기능을 가진 API 서버를 만들 수 있습니다.

0차시 과제는 유저 인증을 구현하며 Spring Boot 애플리케이션의 구조를 이해하는 것을 목표로 합니다.

시작하기

데이터베이스로 MySQL을 사용합니다. Docker 라는 툴을 이용해서 로컬에 MySQL을 띄우게 되니, Docker를 설치하고 나서 아래 명령어를 실행해주세요.

테스트를 돌리거나, 로컬 서버를 띄우기 전에는 docker compose up -d 을 통해 MySQL을 띄워주세요. (도커는 이후 세미나, 과제 부터 서버를 배포하기 위해 사용하는 툴으로 4차시에서 자세하게 설명드릴 예정이니 이참에 설치해두시고 가지고 놀아 보셔도 좋습니다.)

docker compose up -d

띄운 서버를 종료하고 싶은 경우에는 아래 명령어를 실행해주세요.

docker compose down

향후 조별과제나 토이프로젝트 등에서 다른 사람들과 협업할 때에는 통일된 코드 스타일을 지키는 것이 중요합니다. 아래와 같이 ktlint란 도구로 Kotlin의 코딩 컨벤션을 지킬 수 있습니다.

./gradlew ktlintFormat

0차시 과제 - 유저 인증

  • 회원가입, 로그인, 본인 조회 API를 구현합니다.
  • 유저 정보는 MySQL에 저장합니다. 이미 테이블과 엔티티가 주어져 있으며, 이번 과제에서는 DB를 다루지 않습니다.
  • 이미 API endpoint와 DTO가 주어져 있습니다. 이번 과제에서는 인증 로직과 비즈니스 로직 구현에만 집중합니다.

스펙 정의

  • 회원가입
    • 아이디(username)와 비밀번호를 입력하여 가입할 수 있습니다.
      • username은 4글자 이상이어야 합니다.
      • 비밀번호는 4글자 이상이어야 합니다.
      • 비밀번호는 DB에 암호화하여 저장하여야 합니다.
      • username은 중복될 수 없습니다.
  • 로그인
    • username과 비밀번호를 입력하여 로그인할 수 있습니다.
    • 사용자의 username과 비밀번호가 일치하면 액세스 토큰을 발급합니다.
    • 사용자의 username과 비밀번호가 일치하지 않으면 로그인에 실패합니다.
  • 본인 조회
    • HTTP 헤더로부터 액세스 토큰을 얻어 유저를 조회합니다.
    • 액세스 토큰이 유효하면 유저 정보를 반환합니다.
    • 액세스 토큰이 유효하지 않으면 조회에 실패합니다.

구현 도움말

  • AuthIntegrationTest를 통과하는 것을 목표로 구현해 주세요. 테스트 코드에 구현 힌트가 있을지도...?
  • 적절한 HTTP status code를 반환하기 위해서는 GlobalControllerExceptionHandlerUserException을 이용해 보세요.
  • 액세스 토큰의 유효성 체크는 JwtAuthenticationFilter의 빈칸을 채워 구현해주세요. 강의 내용에 이어서 Spring MVC, Servlet에 대해 공부해 봅시다.
  • JWT 토큰 발급과 검증은 JwtTokenProvider에 구현되어 있습니다.
  • 본인 조회는 @LoggedInUserUserArgumentResolver의 동작을 확인하면 아주 쉽게 구현할 수 있습니다.
  • 테스트 코드는 변경하지 말아주세요.

Submission

  • assignment-0 브랜치로부터 {본인 Github username}/assignment-0 이름의 브랜치를 만들고 checkout하여 과제를 시작하세요.
  • 모든 테스트가 통과되는 경우 과제를 제출합니다.
  • 과제 제출은 assignment-0 브랜치를 베이스로 하는 PR을 올려주세요. PR 이름은 {본인 이름} 0차시 과제 로 해주세요.
  • PR을 생성하거나 커밋을 푸시하면 Github Action으로 원격 환경에서 테스트와 ktlint 체크가 시작됩니다. 제출 기한 전에 워크플로우가 통과하도록 해주세요.
  • 제출 기한은 2025년 9월 24일 23:59 까지이며, 마지막 커밋 시각을 기준으로 합니다. Grace Day는 최대 2일 사용할 수 있습니다.
  • 수강생이 많기 때문에 코드 리뷰는 요청주신 분에 한해서 드립니다. PR에 'Request Review' 라벨을 달아서 요청해주세요.

About

2025 Spring 세미나 과제 레포지토리

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages