Study in Bootcamp/Main Project20 [Main Project] 메인 프로젝트 회고 ✔️Date : 2022.11.08 ~ 2022.12.07 What did you do? 👩🏻🌾 자체 로그인과 소셜 로그인 구현 JWT 토큰을 이용한 자체 로그인과 소셜 로그인 구현 REST API를 이용하여 구현 프로젝트 이후 디밸롭 : 필터를 이용하여 자체 로그인과 소셜 로그인 구현, 소셜 로그인 리다이렉트 시 header로 토큰 전달 : 저번 프리 프로젝트 때에 소셜 로그인과 자체 로그인을 동시에 구현해내지 못했다. 때문에 이번에는 무조건 해내고 싶다는 생각이 들었다. 그래서 로그인 파트를 다시 만들게 되었을 때, 욕심을 좀 내보려고 했다. 처음에 필터로 사용해보려고 했으나, 소셜 로그인의 역할 구분에서 리다이렉트 시킬 수 있는 방법이 어려웠다. 그래서 반의 반 정도 구현했을 때에 일정 내에 해내.. 2022. 12. 8. [Main Project] Day 21 : 마지막 디밸롭 및 수정 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. 🖤 리뷰 작성 시, 구매한 적이 있는 회원만 작성 가능 이전 : 모든 소비자는 리뷰를 작성할 수 있다. 수정 : 구매한 적이 있는 소비자만 작성할 수 있다. : 리뷰를 작성할 때, 해당 상품을 산 적이 있는 소비자만 구매할 수 있도록 수정하였다. 리뷰 테이블과 주문 테이블이 연관관계에 있지 않기 때문에 Client의 연관관계를 이용해 1차로 불러온 후, 상품 아이디와 상태를 비교하였다. 내가 하나하나 확인하도록 하기보다는 stream의 필터를 이용하여 구현하는 방식으로 코드를 구성하였다. 먼저 주문의 상품 아이디가 리뷰의 상품아이디와 같은지 확인하고, 그 다음 주문의 상태가 결제 완료인지 확인한다. 그.. 2022. 12. 6. [Main Project] Day 20 : 소셜로그인 권한 수정 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. 🚨 Board와 Product의 id가 같이 가지 않는 문제 원인 : Board의 내용이 vachar여서 특정 길이가 넘어가면 저장이 되지 않음 + @Transactional이 없어서 실패시 롤백이 안됨. 해결 : Board 테이블에서 내용의 컬럼을 TEXT 형식으로 변환 + 서비스 클래스에 @Transactioanl 추가 : Board와 Product의 문제를 다행히도 오늘 발견했다. 그래서 바로 수정에 들어갔다. 해당 문제는 알고보니 트랜잭션과 타입의 문제였다. 그래서 수정하고 계속 테스트해보니 잘 들어가지는 것을 확인했다. 현재 우리 팀은 Board와 Product가 1대1로 연관 관계에 있고, .. 2022. 12. 6. [Main Project] Day 19 + 주말 : 발표 준비 및 배포 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. ✅ Day 19 📎 이모지 삭제 : RDS 설정을 바꾸어보았으나 여전히 이모지 부분이 소셜에서는 저장이 되지 않았다. 그래서 소셜 로그인 시 이모티콘이 들어오면 삭제하는 패턴을 추가해 주었다. 그리고 이름이 없으면 default로 "이름을 입력하세요."라는 이름으로 저장되도록 하였다. 이렇게 되면 카카오 로그인도 잘 들어가지는 것을 확인했다! String name = profile.getKakao_account().getProfile().getNickname(); Pattern emoji = Pattern.compile("[\\uD83C-\\uDBFF\\uDC00-\\uDFFF]+"); Matcher .. 2022. 12. 5. [Main Project] Day 18 : 카카오 로그인 성공 및 토큰에 레디스 적용해보기 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. 💝 Refresh Token에 Redis 적용해보기 : Redis를 본격적으로 적용시켜보았다. Redis를 적용시키는 데에는 두 가지 방식이 있는데 그 중에서 Redis Template 방식을 이용하여 구현해보았다. 이것은 나중에 깃헙에 정리하면서 다시 할 생각이다. 해당 로그인을 해보았는데 이렇게 아래처럼 잘 저장이 된 걸 볼 수 있었다. 아래처럼 조회를 하면 잘 들어가지는 걸 보았다. 사실 흐름은 MySQL 처음 배울 때처럼 아직 명확하게 이해되지는 않고 그냥 따라한 정도였다. 그래도 생각보다 어렵지 않게 따라해볼 수 있었다. 그래서 조금 더 공부해보려고 한다. 💝 카카오 로그인 성공 : 결국 카카.. 2022. 12. 2. [Main Project] Day 17 : 카카오 로그인 여전히 안됨, 배포 시도 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. 🥕 카카오 로그인 여전히 안됨 : 어제부터 발생한 카카오 로그인 서버 문제는 여전히 해결이 되지 않았다. 카카오 데브톡에 문의를 넣었더니 server 주소로 redirect_uri를 요청하고 설정했는데, ip 주소로 간다는 것이었다. 그래서 로그로 하나씩 찍어보니, 서버에서 하면 yml 파일에서 불러온 후 ip 주소로 변환되어 찍히는 것이다. 해당 이유는 사실 알아내지 못했다. 그래서 yml 파일에서 받지 않고, 직접적으로 주입하였다. 이게 해결이 되니 다음은 sql 문제가 생성되었다. genericjdbcexception: could not execute statement 에러가 계속해서 발생되었다... 2022. 12. 1. [Main Project] Day 16 : 카카오 로그인 서버 문제 및 회원 가입 이메일 발송 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. 📌 회원 가입 시 환영 메일 발송 : 회원 가입에 성공하면, 환영 메일을 발송하는 로직을 추가로 구현하였다. google smtp를 이용하여 구현하였다. 또한 이 메일 발송을 위해 동기 비동기에 대해 알아보았다. 사실 정확히 모두 다 이해하지는 못해서 이것도 추가로 계속 공부하는 게 좋을 것 같다. 이메일 발송이 동기로 설정되면 회원가입후 자동로그인까지 약 3~5초정도의 시간이 걸렸다. 비동기로 하면 확실히 시간이 단축되는 것을 눈으로 충분히 확인할 수 있었다. 회원가입이 성공적으로 이루어진다면 아래처럼 메일이 발송된다. yml 파일에 들어가는 정보들을 다 이해하지 못해서 이 부분을 추가로 공부해야할 .. 2022. 11. 29. [Main Project] Day 15 + 주말 : 배포 시도 및 권한 부여 확인, 코드 리팩터링 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. ✅ 주말 📌 프론트 엔드와 통신 테스트 : 본격적으로 통신 테스트를 시작했다. 하지만... 시작부터 안되었다.. 회원 수정이 되지 않았다... 약 몇시간 동안 계속 해당 문제를 해결해보려고 시도해보았다. 아래의 코드로 컨트롤러 메서드의 매핑을 수정해보았으나 해당 문제도 해결이 되지 않았다. @RequestMapping(method = {RequestMethod.OPTIONS, RequsetMethod.PATCH}, value = "/{seller_id}") 계속해서 문제가 해결 안되니 내 코드의 문제인가 싶어 혼자서 굉장히 심각했다. 포스트맨으로는 잘 작동이 되는데, 프런트의 화면에서만 수정이 안된 것.. 2022. 11. 28. [Main Project] Day 13 & 14 : 로그인 필터 구현 및 코드 리팩터링 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. ✅ Day 13 📌 로그인 필터로 구현하기 : 현재 메인 프로젝트에 구현되어있는 로그인은 필터가 아닌 MVC이다. 직접 내가 컨트롤러에서 서비스로 보내어 프로바이더에서 토큰을 생성한 후 응답해주는 방식이다. 내가 이렇게 구현한 것은 필터로 소셜로그인을 하지 못했기 때문이다. 그래서 일일이 컨트롤러와 서비스를 써서 작업을 하였다. 하지만 저번 멘토링 시간에 멘토님이 필터를 쓰는게 더 좋은 코드일 것이라고 조언을 해주셔서 필터를 놓치 않으려고 했다. 그래서 하나의 파일을 새로 생성하여 필터를 따로 작업해보고 있다. 우선 지금은 저번에 했던 기본적인 JWT 필터 구현까지는 완료한 상태이다. 이렇게 다시 구현.. 2022. 11. 26. [Main Project] Day 12 : 카카오 API를 이용하여 결제 구현 및 토큰 재발급 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. 👩🏻🌾 어제의 에러 해결 💡어제 안되었던 부분의 원인(참조 : https://bhinney.tistory.com/142) : 어제 계속해서 Body가 생성되지 않는 다는 에러를 만났다. 해당 부분의 에러를 확인하던 도중 이유를 알게 되었다. 아래의 사진을 보면 Authorization에서 어드민 키 앞에 "KakaoAK "가 붙는 것을 알 수 있다. 이게 내가 문제가 발생했던 이유였다. 나는 헤더에 그냥 어드민 키를 입력하였기 때문에 바디가 생성되지 않았던 것이다. 어드민 키 앞에 "KakaoAK "를 붙여주니 바디가 아주 잘 생성되었다..🥲 👩🏻🌾 카카오 API를 이용하여 결제 구현 : 카카오 A.. 2022. 11. 24. [Main Project] Day 11 : 소셜 로그인 구현 및 결제 시도와 API 정하기 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. 📌 소셜 로그인 구현 🚨 문제의 발생 : Spring Security의 FilterChain으로 구현한 oauthLogin에서 아래 주석처리한 부분인 .userInfoEndpoint()가 계속 빨간 에러가 떴다. 해당 부분을 주석처리하고 작업을 진행했다. 하지만 계속해서 controller로 접근이 안되고, 리다이렉트로 넘어가 로그인을 성공해도 DB에는 저장이 되지 않았다. 그래서 필터가 아닌 Controller에서 일일이 써서 작업을 시도해보았다. @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { htt.. 2022. 11. 23. [Main Project] Day 10 + 주말 : 자체로그인 배포 및 로그인 수정 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. ✅ 주말동안 한 작업 📌 자체 로그인 및 회원가입 배포 시도 로그인과 회원가입을 배포를 시도하였다. 프론트 로컬 - 백엔드 서버 연결을 시도하였다. 처음에 계속 bad request 가 났는데 이유는 "Authorization"에 "Bearer "가 두번 들어간 것. 백에서 프론트로 줄 때, "Bearer "를 빼고 주는 것으로 수정하였다. 다행히 로컬 - 서버는 큰 Cors 없이 성공하였다. ✅ 오늘 한 작업 📌 로그인 응답 바디 수정 문제 : 회원이 판매자와 소비자로 나뉘어져 있다. 때문에 판매자 아이디와 소비자 아이디가 응답바디에 필요하다. 수정 : response dto를 seller와 clie.. 2022. 11. 22. 이전 1 2 다음