본문 바로가기

TIL(Today I Learned)

(137)
TIL-230901(항해99 실전 프로젝트-행동대장(22)) 📝오늘 공부한 것 실전프로젝트 - '행동대장' 로그인 시 refresh token 추가 기능 구현 📌 Refresh Token 추가 처음에 refresh token기능을 구현할 때, 프론트에서 만료된 access token으로 request를 하면 나는 만료된 access token인 것이 확인이 되고 refresh token이 유효한 것도 확인이 되면 새로운 access token을 발급하는 방식을 사용하였다. 뭐가 문젠지는 모르겠지만, 계속 프론트에서 새로 발급받은 access token을 받지 못한다고 하였다. CORS에러가 난것도 아니고, fostman으로 잘 확인이 되어서 뭐가 문젠지를 찾지 못했다. 그래서 프론트분과 다른 기능을 먼저 구현을 끝내고 refresh token을 다시 도전해보기로 ..
TIL-230831(항해99 실전 프로젝트-행동대장(21)) 📝오늘 공부한 것 실전프로젝트 - '행동대장' 닉네임 변경 트러블슈팅 실전프로젝트 - '행동대장' 마이페이지 구현 ⛔문제점 마이페이지를 추가하면서 닉네임 변경 기능을 구현하게 되었다. JWT 생성 시 닉네임 정보를 사용하는데, 이로 인해 닉네임이 변경된 경우 이전에 발급받았던 JWT가 더 이상 유효하지 않게 되는 문제가 발생했다. 즉, 닉네임이 변경된 후에도 사용자는 이전 닉네임으로 생성된 JWT를 가지고 있어서 권한 관련 문제가 생긴것이다!! [createAccessToken메서드] [updateNickname메서드] 💯해결 사용자의 닉네임이 변경될 때마다 새로운 access token과 refresh token을 발급하여 클라이언트로 전달하도록 처리했다. [updateNickname메서드] 이렇게 함..
TIL-230830(항해99 실전 프로젝트-행동대장(20)) 📝오늘 공부한 것 실전프로젝트 - '행동대장' 마이페이지 구현 📌 마이페이지 카카오로그인 시 이메일제공에 동의하지 않고 가입하는 유저는 이메일에 대한 정보가 들어오지 않아 DB에 저장을 할 수 없다. 그런데 우리 프로젝트에서 알림기능을 추가로 구현하기로 하였다. 사이트에서의 알림뿐만 아니라 '해결했어요'가 5개 넘으면 게시글이 완료처리되면서 완료되었다는 알림을 이메일로 보내는 기능을 추가하였다. 그런데 이메일이 없는 카카오유저에게는 이메일이 가지 않아, 나중에 받고 싶어도 받을 수 있는 방법이 없기 때문에 이메일을 따로 받게 하자고 하였다. 그래서 이메일을 따로 등록하는 기능을 만들기 보다는 마이페이지를 만들어서 그 기능을 추가하자는 의견이 나왔다. 마이페이지에는 이메일 추가등록, 닉네임 변경, 비밀번호..
TIL-230829(항해99 실전 프로젝트-행동대장(19)) 📝오늘 공부한 것실전프로젝트 - '행동대장' 트러블 슈팅실전 프로젝트 - '행동대장'  유저피드백 준비 📌 트러블 슈팅⛔ 문제점 : Dirty Checking이 작동되지 않음마이페이지에서 이메일, 닉네임, 비밀번호 update기능을 구현하였는데 DB에 반영되지 않는 문제가 발생하였다. [updateNickname메서드]닉네임 변경에 대한 코드를 작성하고 dirty checking을 기대하며 Transactional을 걸어주었다.@Transactional을 걸어주면 JPA Entity를 업데이트할 때 Dirty Checking을 지원하여 트랜잭션 안에 save를 명시적으로 호출하지 않아도 commit시에 판단해서 update를 해준다. [Postman][User table] 그런데 코드를 실행하였을 때..
TIL-230828(항해99 실전 프로젝트-행동대장(18)) 📝오늘 공부한 것 실전 프로젝트 - '행동대장' 카카오로그인 기능구현 ⛔문제점 ① 카카오 로그인 시 개인정보 동의에서 이메일제공에 동의하지 않는 유저가 있을 경우 [에러메시지] ERROR 34868 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.JsonNode.asText()" because th..
TIL-230826(항해99 실전 프로젝트-행동대장(17)) 📝오늘 공부한 것 실전프로젝트 - '행동대장' 카카오로그인 구현 인프런 김영한의 스프링 강의 섹션5 ⛔문제점 [에러 메시지] Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request: "{"error":"invalid_grant","error_description":"authorization code not found for code=v7B6seKGSDCRLKpOvIwAfATwHgLiGfeddI7QNVmu..
TIL-230825(항해99 실전 프로젝트-행동대장(16), EC2에 Swap Memory 적용) 📝오늘 공부한 것실전프로젝트 - '행동대장' 카카오로그인 기능구현인프런 김영한의 스프링 강의 섹션4 ⛔문제점프로젝트를 진행하던 중 프론트에서 갑자기 서버를 닫았는지 물어보셨다. 서버를 종료한 적이 없어서 확인해 보려고 ssh접속을 하려 했으나, ubuntu서버에 접속조차 할 수가 없었다.  AWS를 확인해 보니 CPU사용량이 급증한 것을 확인할 수 있었다.   CPU 사용량이 급증하면서, 서버의 메모리 사용량을 감당할 수 없게 되어 EC2 다운되는 문제가 발생한 것이었다.  💯해결 EC2 인스턴스를 생성할 때 프리티어인 t2.micro를 선택하였다. t2.micro는 메모리를 1GB 제공한다.메모리 부족현상을 해결하기 위해 swap file을 이용한 swap memory를 할당하였다.swap 메모리는..
TIL-230824(항해99 실전 프로젝트-행동대장(15)) 📝오늘 공부한 것 실전프로젝트 - '행동대장' 카카오로그인 기능구현 인프런 김영한의 스프링 강의 섹션3 📌Fostman으로 카카오로그인 확인하기! 1. 카카오에 인가코드 요청 - Chrome창에 url입력 https://kauth.kakao.com/oauth/authorize?client_id= {REST_API_KEY}&redirect_uri={REDIRECT_URI}&response_type=code 2. code 가져오기 http://localhost:8080/api/auth/kakao?code=VYL3ewO0HiFtLWO3wxUJGDkYHzX cwrIbDKGefGV2LS4DdTYKJp5NW7spxNceBWOmf6hrQoqJU8AAAGKNhK_tg 중 code=의 뒷부분 복사 3. Key값에 cod..