부트캠프 개발일기123 102일차: Main-Project Day 9 (Google OAuth2.0 회원가입, CSR 방식) 뭔가 많이 배운것같아서 기분좋은 월요일이다. 지난주에 회원에 대한 전반적인 기능을 마무리하고 오늘은 지난번에 덮어두었던 OAuth2.0를 다시 적용해보기로 했다. 오늘은 아예 Google OAuth2.0 공식문서를 쭉 살펴보았다. 참고: 구글 OAuth2.0 웹서버 공식문서 웹 서버 애플리케이션용 OAuth 2.0 사용 | Authorization | Google for Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 웹 서버 애플리케이션용 OAuth 2.0 사용 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분 developers.google.com 차근차근 내용을 살펴보니 지난번 수업때 배웠.. 2023. 7. 10. 101일차: Main-Project Day 8 (HandlerInterceptor, SecurityContextHolder) 하루하루 지날수록 새로운 경험들을 하고있다...🥲 그래서 이래저래 코드를 막 덧붙이다보니 코드가 지저분해진 것 같기도 해서 일부 리팩토링 작업도 진행했다. 오늘은 하루종일 쿠키와의 전쟁아닌 전쟁이었다. ngrok으로 백엔드서버를 열고 프론트서버에서 회원가입, 로그인요청을 보냈을 땐 정상적으로 작동했다. 그런데 쿠키(리프레시토큰)로 액세스토큰을 재발급 받는 과정에서 계속 403 에러가 발생했다. CORS 설정이나 SameSite 설정을 다 풀어두었는데도 계속 에러가 발생했다. 쿠키가 서버쪽으로 전송되지 않는 문제였는데, 구글링 해서 찾아본 바로는 쿠키의 범위(사용 가능 범위?)는 동일한 도메인 혹은 지정한 도메인에서만 가능하다고 한다. 프론트 측에 도메인 관련 문의했을 땐 http://localhost:X.. 2023. 7. 8. 100일차: Main-Project Day 7 (Redis, RefreshToken으로 AccessToken 재발급, 로그아웃) 벌써 100일째라니!! 시간 참 빠르다. 오늘은 코드에 많은 변경이 있었던 날이다. 오전에는 Request에서 User 식별자를 어떻게 가져올지에 대해 고민하느라 코드를 이리저리 뜯어보는데 시간을 보냈다. 예전에 나는 HandlerInterceptor를 사용해서 Request에서 memberId를 가져왔었는데, 팀원중에 한분은 ContextHolder에서 memberId값을 가져왔다. 그 방법이 더 간편한것같아서 (Interceptor는 경로를 다 지정해줘야했다.) 시도해봤는데 그랬더니 에러 처리에서 문제가 생겨서 일단 나중에 다시 시도해봐야할것같다. 그 외에 오늘은 로그인/로그아웃 관련 전체적인 작업을 진행했다. 로그인하고 발급한 RefreshToken을 Redis에 저장하고, RefreshToken을.. 2023. 7. 6. 99일차: Main-Project Day 6 (Refresh Token, Cookie, 인증 에러 처리) 현재 로그인, 인증부분을 구현하는중이다. 인증과정에서 토큰시간만료, 잘못된 토큰 등 에러가발생하면 OncePerRequestFilter를 상속받은 필터를 통해 에러를 기록하고 AuthenticationEntryPoint를 구현한 클래스에서 에러 처리를 해주었다. (이전글 참고) 확실히 한번 해봤던 부분을 다시 해보니 개념이 좀 더 명확해지기도 했고, 중복되는 부분을 제거하고 더 간결하게 코드를 작성할 수 있었다. 2023.06.22 - [부트캠프 개발일기/Pre-Project] - 90일차 - Pre-Project Day 10-1 (인증 에러 처리: AuthenticationFailureHandler, AuthenticationEntryPoint) 그리고 오후에는 프론트엔드 담당자분이 보안과 관련해서 .. 2023. 7. 5. 98일차: Main-Project Day 5 (회원가입, 로그인) 오전까지 프로젝트 설계 및 개발환경 세팅을 마무리하고 각자 맡은 부분 구현에 들어갔다. 이전 프리프로젝트에서 작성했던 것과 거의 유사한 코드였으나 버전세팅이나 필드명이 바뀌면서 몇가지 오류가 발생했다. 1. Spring Security 자동 구성 비활성화 코드 작성에 앞서, Spring Security 의존성을 추가해두었으나 인증 부분을 구현하지 않은경우 다른 코드를 작성하고 테스트할 때 인증으로 인해 결과를 확인하기 어려울 수 있다. 이때 간단하게 Security 자동 구성 기능을 꺼두는 방법이 있다. 아래와 같이 애플리케이션에서 exclude = SecurityAutoConfiguration.class을 추가하면 된다. @SpringBootApplication(exclude = SecurityAuto.. 2023. 7. 4. 97일차: Main-Project Day 4 (ERD, API 명세서, 업무분장) 지난 토요일에 멘토링받은 내용을 바탕으로 ERD를 수정하고 거기에 맞춰서 API 명세서, 칸반(이슈) 등록, 업무분장을 정했다. 1. ERD 우리 프로젝트는 커스텀 제품 구매를 메인 기능으로 가지고 있다. 회원가입 -> 로그인 -> 제품 / 가게 리스트 확인 -> 제품 커스텀 -> 장바구니 추가 -> 주문 의 흐름으로 사용자 서비스가 제공되는데 이에 따라 엔티티 설계를 마무리 했다. 프로젝트 기간을 고려해 구매자 입장에서의 메인 기능만 우선적으로 구현하기로 했다. 시간이 되면 프리프로젝트에서 해보지 못했던 테스트, 문서화를 적용해 보고 혹시 더 여유가 된다면 기능을 추가하고자 한다. 아래 구조는 현재까지 완성된 버전으로, 이 내용으로 코드를 작성하되 필요하면 변경될 수 있다. 2. API 명세서 사용자 .. 2023. 7. 3. 이전 1 2 3 4 5 6 7 ··· 21 다음