Study in Bootcamp/Pre-Project12 프리 프로젝트 회고 ✔️Date : 2022.10.20 ~ 2022.11.07 What did you do? ✅ Spring Security와 JWT를 이용하여 로그인 구현 : Spring Security와 JWT를 이용하여 로그인을 구현하였다. DB에 저장된 유저가 자신의 아이디와 비밀번호로 로그인을 하면, 헤더로 Access Token(Authorization)과 Refresh Token을 발급해주도록 설정하였다. 사실 토큰을 발급받고 흘러가는 흐름을 명확하고 정확하게 100프로 이해했다고 얘기하지는 못한다. 하지만 그래도 전보다는 그래도 어떻게 흘러가는 지는 느껴졌다. Security FilterChain을 이용하여 조금 쉽게 로그인 로직을 구현할 수 있었다. 중간 중간 커스텀이 필요한 부분은 직접 커스텀을 하면서 진.. 2022. 11. 8. [Pre-Project] Day 13 : 헤더로 토큰 전달, 배포(실패😭) 프로젝트를 하는 과정에 있어서 기록하는 것이다. 본 글은 오늘이 마지막이다. ✅ 헤더 토큰 전달 JWT로 로그인을 구현한 후, 헤더로 Authorization과 Refresh Token을 전달하려고 했다. 그런데 헤더로 전달이 안되는 것... 그래서 찾아봤더니 해당 키는 따로 또 설정을 해줘야 한다고!! CORS 필터에 아래 두 코드를 추가해주었다. 아래 링크를 보고 알게 되었다. 참조 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers configuration.addExposedHeader("Authorization"); configuration.addExposedHeader("Refresh").. 2022. 11. 8. [Pre-Project] Day 12 + 주말 : CORS 해결 및 유저 정보 판별 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ CORS 해결 금요일부터 주말 내내 CORS 오류를 해결하려 했으나 해결하지 못했다. 거기에 플러스로 회원가입도 되지 않았다. @CrossOrigin 어노테이션도 붙여보고, 어트리뷰트도 다 넣어줘보았다. @CrossOrigin(origins = "*", allowedHeaders = "*", allowCredentials = "true", maxAge = 5000L) WebMvcConfig를 만들어 addMapping도 했으나 이 오류는 해결되지 않았다. 그리고 황당하게 찾은 이유.. OPTIONAL 메서드가 허용되어 있지 않았다. 해당을 추가해주고, 어노테이션을 주석처리하니 해결이 되었다... 2022. 11. 7. [Pre-Project] Day 11 : SQL 데이터 넣기 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ SQL 데이터 넣기 schema와 data 값을 미리 넣어두려고 하였다. 아무래도 이렇게 작업을 해두면 프론트 분들이 일일히 데이터를 넣지 않아도 된다고 생각했기 때문이다. JDBC에서는 별 문제 없었는데 JPA는 의외로 계속 어려웠다. (아직 실패중) 계속해서 오류가 나고 구글링을 따라해도 안되어서 새로 스프링 프로젝트를 만들어 보았다. 그랬더니 오류가 없이 계속 잘 됨... 이렇게 올리고 나서 데이터만 넣어보는건 되었다..! 근데 스키마는 그냥 create나 create-drop으로 해야할 거 같다. 내일까지 우선 도전 조금 더 찾아보고 내일까지 도전 해볼 것! 이게 안된다면 RDS에 저.. 2022. 11. 4. [Pre-Project] Day 10 : OAuth2 구현해보기 및 MySql Update 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ 데이터 입출력 확인 및 MySQL Update로 작업 확인 이제 어느 정도 백엔드 작업이 틀이 많이 갖춰지게 되었다. 그래서 DB에 잘 들어가는지, 입출력이 잘 되는지 합쳐서 확인해보았다. 우선 지금 상태로는 잘 들어가고, 이제 여기서 권한과 유저 아이디를 받아와서 확인하는 작업을 거칠 것 같다. MySQL도 Update로 바꿔서 확인해보았다. 아래의 코드처럼 application.yml 파일을 수정해주었다. (그 전에는 ddl-auto를 create로 해주었다.) MySQL 워크 벤처로 조금 쉽게 접근해서 확인하였다. spring: datasource: driver-class-name: c.. 2022. 11. 3. [Pre-Project] Day 9 : Spring Security 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ 주말 동안 구현한 것 JWT를 이용한 로그인 구현 현재 JWT를 이용하여 Access Token을 받아오고 그것을 헤더로 요청하면 권한을 가질 수 있다. ✅ 시도한 것 OAuth2와 자체 로그인을 동시에 사용 Security FilterChain에 그냥 등록하면 작동 안됨 공통 클래스를 빼고 설계를 바꿔야 함. 로그인 실패시 에러 메세지 변환 시킴. 😵💫 과정에서 발생했던 문제 우선 Config에서 필터를 수정하고, oauth2와 로그인을 동시에 해봤는데 순환 참조가 됨...! 🔥 해야할 것 : 끝나면 취소선으로 표시 1️⃣ OAuth2 로그인 구현 자체 로그인이랑 같이 사용이 가능한지 공.. 2022. 11. 2. [Pre-Project] Day 8 : JWT 이용한 로그인 및 권한 부여 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ JWT (JSON Web Token) JWT를 이용하여 로그인 구현하려고 함 JWT Tokenizer 클래스를 만들어 Access Token과 Refresh Token 생성 권한을 부여하기 위해 User Role 생성 Login DTO 생성 Security Filter Chain을 이용해 JWT를 이용한 로그인 구현 antMatcher()을 이용하여, HttpMethod Role 제한 😵💫 과정에서 발생했던 문제 EndPoint를 '/users/{user_id}' 이런식으로 정했는데, antPatter에 '/*/users/**' 이렇게 설정해 준 것. 그래서 권한이 없음에도 계속해서 Get.. 2022. 10. 31. [Pre-Project] Day 7 : CheckStyle Convention Build 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ❗️만약 " A failure occurred while executing org.gradle.api.plugins.quality.internal.CheckstyleAction" , "Unable to create Root Module" 키워드로 검색해서 지금 포스팅에 들어왔다면 3️⃣ 확인 혹은 링크 클릭 ❗️ Intelli J 네이버 코딩 컨벤션 적용 및 Check Style Build 지난 프리 프로젝트를 하면서 프로젝트에 코딩 컨벤션을 적용하고, 빌드에 포함시키면서 작업을 하였다. 힘들기도 했지만, 깔끔하고 가독성이 좋게 코드가 정리가 되었던 경험이 좋았다. 해당 bhinney.tisto.. 2022. 10. 28. [Pre-Project] Day 6 : 연관관계 매핑 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. 오늘은 사실 매핑에 조금 헷갈리고 어려워서 설명하고, 이해하고 하는데 시간을 많이 쏟았다. ✅ 연관관계 패핑 각 엔티티 테이블 간의 참조를 위해 매핑을 하였다. 테이블과 테이블 사이의 관계성을 생각하는게 어려웠다. User : Question = 1 : N User : Answer = 1 : N User : QuestionVote = 1 : N User : AnswerVote = 1 : N Question : Answer = 1 : N Question : QuestionVote = 1 : 1 1 : N 으로 보고 재 매핑하기로 했다. 하나의 질문의 여러 추천이 되는데 참조가 필요한 부분이 있기 .. 2022. 10. 28. [Pre-Project] Day 5 : Git Flow 꼬임, Check Point 미적용, User 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. 🚨 Git Flow 꼬임 문제 : 백엔드 초기 설정 파일이 main으로 merge된 이후, dev-be 파일로 동기화가 되지 않았다. 해결 : main의 변화를 dev-be로 merge + 이전에 날린 PR 기록 close. ✔️ Check 1️⃣ 항상 먼저 dev-be 브랜치 상태를 확인하기! 👉🏻 이걸 확인하지 못해서 main과 dev-be가 동기화 되지 않아, 이후 문제 발생 😭 때문에 충돌...문제도 발생하고, 동기화가 되지 못함!! 2️⃣ dev-be 브랜치를 pull 하고 그 이후에 branch 생성해서 이동 후 작업! 3️⃣ merge 하지 않고 branch 이동을 했는데, 이전의 .. 2022. 10. 26. [Pre-Project] Day 4 : ERD 작성, 테이블 명세서 작성, API 명세서 작성 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ ERD 작성 ERD : Entity Relationship Diagram 테이블 간의 관계를 설명해주는 다이어그램 프로젝트에서 DB의 구조를 한눈에 파악 가능 ✔️프로젝트 ERD 작성 엔티티 별로 Master Table 생성 -> Users, Questions, Answers, Comments 각 엔티티 안에 들어갈 필드 정리 구현에 필요한 Table 생성 -> Questions_Vote, Answers_Vote 각 테이블 별로 연관관계 표시 ✅ 테이블 명세서 작성 테이블과 인덱스를 데이터베이스 공간에 맵핑시키고 저장공간 등의 물리 모델을 기술 서비스에서 사용될 테이블을 미리 설계하고 그 내.. 2022. 10. 25. [Pre-Project] Day 3 : 초기 설정 및 사용자 요구사항 정의서 Day1에는 팀 구성 및 빌딩을 그리고 Day2에는 GitHub을 다시 잡고 이제 프로젝트에 드디어 입성(?)하였다. 따라서 이제 프로젝트를 하나씩 기록하려고 한다. 프로젝트를 하는 과정에 있어서 잘못된 부분이 있으면 계속해서 수정할 예정! ✅ Commit convention 정리 및 추가 규칙 정리 브랜치 정리 : main, dev-fe, dev-be, feat/이슈번호-키워드 커밋 컨벤션 정리 : feat, refactor, docs, fix, test, chore, style 커밋 할 때 지키면 좋은 것 : https://meetup.toast.com/posts/106 참조하여 wiki에 정리 규칙 및 컨벤션 등은 GitHub wiki에 정리 ✅ 사용자 요구사항 정의서 시스템의 요구사항을 도출하여 .. 2022. 10. 24. 이전 1 다음