Skip to content

hamhyeongju/example-todo

Repository files navigation

ToDo-List

스프링부트과 JPA를 어느정도 공부한 후 일단 만들어본 ToDo 프로젝트입니다.
기본적인 CRUD를 중심으로 개발했으며 첫 프로젝트이기에 부족한 부분이 많아도 양해 부탁드립니다.
어떤 형태라도 피드백 주시면 감사하겠습니다

https://hhj-todo.herokuapp.com/ 에서 사용해 보실 수 있습니다. (heroku eco dyno를 사용하여 최초 접속 시 로딩이 느릴 수 있습니다. sleep : 마지막 요청으로부터 30분 지나면 'sleep' 상태로 진입하여 애플리케이션이 중단)

  • 프로젝트 자체의 보안 수준이 낮기 때문에 체험 용도로만 사용하시고 민감한 정보는 등록하지 않는 것을 추천드립니다.

개발 과정은 블로그에 작성했으니 참고하시길 바랍니다.

개발환경

  • IDE : IntelliJ IDEA Ultimate
  • OS : Window 10
  • SpringBoot 2.7.3
  • Java 11
  • Gradle 7.5

라이브러리

  • Spring Web
  • Spring Data Jpa
  • H2 Database (MySQL)
  • Validation
  • Thymeleaf
  • Lombok
  • Spring Security 5.7.3

로컬에선 H2 Database를 사용했고 heroku에 배포 시에는 heroku 내장 db(JawsDB MySQL)를 사용했습니다.
디자인에 사용한 css와 js는 부트스트랩을 활용했습니다.

핵심 기능

  • 회원 가입 image

Bean Validation을 활용한 양식 검증 로직과 로그인 ID 중복 검증 로직 포함, 검증 오류 시 작성한 데이터는 남긴 채 에러메시지가 표시, 이후 Spring Security를 도입하여 비밀번호 암호화

  • 로그인 image

개발 초기에는 직접 로그인 기능(LoginService, LoginController)과 사용자 인증(LoginInterceptor)를 구현, 이후 Spring Security로 마이그레이션

  • ToDo CRUD image 기본적인 CRUD 기능과 마감일, 생성일을 기준으로 정렬하여 출력하고 별도의 검증 로직 포함 image image

ToDo 생성과 수정은 별도의 폼에서 처리

세부 기능

  • Spring Interceptor
    스프링 인터셉터를 활용하여 비로그인 사용자의 경우 ToDo 관련 페이지 접근 불가(스프링 시큐리티로 대체), 다른 사용자의 ToDo에 접근 불가
    로그인 사용자에게는 상단에 로그아웃 버튼 생성, 첫 페이지에서 로그인 버튼 대신 할 일 버튼 표시, 로그인 페이지 접근 불가

  • Spring Security
    프로젝트 중반, 스프링 시큐리티를 도입하여 회원 정보 암호화, 로그인, 사용자 인증, csrf 공격 방어 기능 처리

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published