Spring/괴발개발 14

[괴발개발] 덕지덕지 개발記 (#2)

본격적으로 데이터베이스 설계를 해보고자 한다. 엔티티는 크게 유저(member)와 메모지(memo)로 2개이다. 하지만, 현재 S3와 같이 외부 스토리지가 따로 준비가 되어있지 않은 관계로 유저의 배경화면을 따로 저장을 할 수 없다. 그렇기에 이를 데이터베이스에 따로 저장하여 사용할 계획이다. (배경 엔티티가 추가로 생긴다.) 위와 같이 ERD(엔티티 관계 다이어어그램)으로 표현할 수 있다. 물론 JPA 를 사용하는 경우, Join Table 이나 프록시 등으로 브릿지 테이블은 개발자가 직접 구현하지 않아도 된다. (실수로 전부 비식별키로 해버렸다.) 여기서 메모지 엔티티를 보면 칼럼이 굉장히 많으며, 몇몇 칼럼들이 부분적 종속이 존재한다. (뭔가 더 깔끔하게 ERD를 작성하고 싶었지만, ERDCloud..

Spring/괴발개발 2023.02.20

[괴발개발] 덕지덕지 개발記 (#1)

기존 덕지덕지를 전부 갈아엎고 다시 개발할 예정이다. 1년전 코드를 다시 보니 너무 개판이고, 왜 사용하는 지도 제대로 알지 못한 채 그냥 막 사용했던 기억이 있어, 필자의 경험상 제대로 알지 못하고 사용한 경우에는 다시 새롭게 만드는 편이 귀찮더라도 오랫동안 기억에 남기 때문이다. 그리고 더 오랫동안 기억에 남기기 위해 데이터베이스 설계, 아키텍처 설계 등 개발을 하며 발생하는 거의 모든 내용들을 기록하고자 한다. 개발 목표 "간단한 메모만 하고 싶을 때 사용하는 원격 메모지 서비스" 개발 내용 유저 기능 로그인 (Google Login, Kakao Login) 전부 OAuth 유저 기본 정보 수정 메모지 작성 (수정, 삭제 포함) 배경 화면 변경 로그아웃, 회원 탙퇴 메모지 기능 메모지 색 변경 글씨..

Spring/괴발개발 2023.02.19

[괴발개발] 덕지덕지 - 기본 페이지 및 엔티티 설계

일상글에서 언급했다시피 프로젝트명을 Remote Note에서 덕지덕지로 바꾸었습니다. 포스트잇 혹은 메모지를 벽에 덕지덕지 붙인다는 말이 떠올랐고, 어감이 나름 괜찮아서 무엇보다도 Remote Note 보다는 괜찮아서 이름을 바꾸었습니다. 현재 아주 단순한 것부터 개발을 하였습니다. 먼저 엔티티부터 설계를 하였습니다. OAUTH 2.0으로만 로그인하도록 기획하였기에 이에 맞게 엔티티를 설계하였습니다. @Getter @AllArgsConstructor @NoArgsConstructor @Builder @Embeddable public class OAuth implements Serializable { @NotNull @Column(unique = true) private String email; @NotN..

Spring/괴발개발 2022.03.30

[괴발개발] Remote Note

갑자기 원격 노트가 있었음하면 생각에 개인 프로젝트로 한 번 만들어볼까 싶어서 직접 개발해보기로 했습니다. 원격 노트, 원격 메모지에 맞는 이름을 지을 려고 했지만, 딱히 좋은 생각이 들지않아서 Remote(원격) Note(노트) 라고 지었습니다. 누가 작명했냐;; 다음 pdf은 제가 Notion으로 작성한 일종의 기획서입니다. 총 2가지의 프레임워크를 사용할 것 같습니다. React Spring 일단 네이티브도 데드라인에 포함시켰으나, 상황에 따라 네이티브는 제외될 수도 있습니다. 이상입니다.

Spring/괴발개발 2022.03.22

[괴발개발] REST API - 이메일 인증

※본 포스트는 이전 포스트와 이어집니다.※ 지난 번에... 가상의 시나리오들 중 3번을 제외한 나머지들은 개발하였습니다. 비밀번호 변경을 위한 메일 발송을 하기 위해 몇 가지 세팅을 해야합니다. 준비 과정 먼저 지메일(gmail)를 사용하여 이메일을 발송할 것이기에 앱 비밀번호를 추가해줘야합니다. 앱 비밀번호는 2단계 인증을 사용해야하지만 가능한 기능입니다. (보안 탭에서 찾을 수 있습니다.) 기기 선택을 메일을 보낼 기기로 선택하고 생성한 후, 도움말에서 나온 대로 설정해주면 사용 가능합니다. 그후, dependency를 추가합니다. implementation 'org.springframework.boot:spring-boot-starter-mail' dependency를 추가하고 난 후에는 appli..

Spring/괴발개발 2022.03.03

[괴발개발] REST API - 인증

저는 Spring로 인증을 할 때, 늘 WebSecurityConfigurerAdapter를 상속해서 개발했었습니다. 하지만, 이 방법을 하면, SpringSecurity가 필요하였고, SpringSecurity에 아무런 설정이 없다면, 기본 로그인을 해야 하고, 그렇지 않으려면, WebSecurityConfigurerAdapter로 설정을 해주어야 했습니다. 그리고 그 외에도 설정을 해주어야 하는 부분들이 많아 프로젝트의 규모가 크면 클수록 귀찮아지고 하나하나 하기 힘들었습니다. (물론 보안에 있어 많은 모듈들을 지원해주는 것에 있어서는 고마움을 느낍니다.) 그래서 이번 포스팅에서는 SpringSecurity 없이 다음 3가지 인증, 인가 기능을 구현해보는 것을 목표로 세웠습니다. 비밀번호 암호화 이메..

Spring/괴발개발 2022.03.02

[괴발개발] TODO 웹 개발 노트 - 도커(Docker) 배포

먼저 docker를 사용해서 배포를 했습니다. ssh 역시 적용하고자하였으나 잘 되지않아 일단 localhost에서만 하도록 하였습니다. 기존에는 테스트 단계였기에 인-메모리 DB인 H2 데이터베이스를 사용하였습니다. 현재는 mysql 8.0 데이터베이스를 적용하였습니다. 먼저 DB를 docker에 저장하면서, 어플리케이션을 같이 실행(배포)하기 위해 docker-compose.yml를 사용해서 배포를 했습니다. application.yml에 있는 정보 일부를 docker-compose.yml로 넘깁니다. 그리고 ./gradlew build를 사용해서 빌드를 하고 jar를 생성하여 도커에 배포합니다. version: "3" services: database: image: mysql container_na..

Spring/괴발개발 2022.02.21

[괴발개발] TODO 웹 개발 노트 - 예외처리 및 완료

0. 권한 없이 admin.html 접속 ✅ (로그인 폼으로 이동) 1. 회원가입 값 하나도 안 넣고 해보기 ✅ (빈칸임을 알려줌) 2. 회원가입 값 이메일만 넣고 해보기 ✅ (빈칸임을 알려줌) 3. 회원가입 값 비밀번호만 넣고 해보기 ✅ (빈칸임을 알려줌) 4. 로그인 그냥 해보기 (아무거나) 🚫 (error 라고만 알려줌) -> ✅(html 예외처리) 5. 회원가입 제대로 해보기 ✅ (로그인 폼으로 정상 이동) 6. 로그인 제대로 하기 ✅ 7. 일반 계정으로 admin.html으로 접속하기 ✅ (접근 불가 페이지임을 알려줌) 8. 글 작성 값 하나도 안 넣고 해보기 ✅ (빈칸임을 알려줌) 9. 글 작성 값 제목만 넣고 해보기 ✅ (빈칸임을 알려줌) 10. 글 작성 값 내용만 넣고 해보기 ✅ (빈칸임을..

Spring/괴발개발 2022.02.20

[괴발개발] TODO 웹 개발 노트 - 권한 부여

기존에 존재했던 코드를 거의 다 갈아엎었습니다. 아무래도 RESTful API를 본인 어플리케이션에서 사용하면서 권한을 부여하기에는 조금 무리가 있는 것 같았기에 갈아엎었습니다. (JWT가 문제였는 데, JWT를 사용하여서 해더를 통해 권한을 부여하여야하는 데, 이를 관리하기 위해서는 쿠키에 값을 저장을 해야합니다. 그럼 결국에는 코드 갈아엎는 것은 동일하였기에 코드를 그냥 갈아엎고, RESTful를 포기하였습니다.) @EnableWebSecurity @AllArgsConstructor @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { private MemberService memberService; @Bea..

Spring/괴발개발 2022.02.19