스프링부트과 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는 부트스트랩을 활용했습니다.
Bean Validation
을 활용한 양식 검증 로직과 로그인 ID 중복 검증 로직 포함, 검증 오류 시 작성한 데이터는 남긴 채 에러메시지가 표시, 이후 Spring Security를 도입하여 비밀번호 암호화
개발 초기에는 직접 로그인 기능(LoginService, LoginController)과 사용자 인증(LoginInterceptor)를 구현, 이후 Spring Security로 마이그레이션
ToDo 생성과 수정은 별도의 폼에서 처리
-
Spring Interceptor
스프링 인터셉터를 활용하여비로그인 사용자의 경우 ToDo 관련 페이지 접근 불가(스프링 시큐리티로 대체), 다른 사용자의 ToDo에 접근 불가
로그인 사용자에게는 상단에 로그아웃 버튼 생성, 첫 페이지에서로그인
버튼 대신할 일
버튼 표시, 로그인 페이지 접근 불가 -
Spring Security
프로젝트 중반, 스프링 시큐리티를 도입하여 회원 정보 암호화, 로그인, 사용자 인증, csrf 공격 방어 기능 처리