jwt 토큰 쿠키 담기 문제

Hong·2021년 11월 19일
0

며칠 전부터 나는 jwt 토큰을 이용한 3티어 아키텍처를 구현하는 연습을 했다.
인증/보안은 확실하게 신뢰성과 안전성이 보장되어야 해서 더욱 손이 많이 갔다.
처음부터 코드를 적는게 쉽지 않았고 실수를 남발하여 많은 에러를 발생시켰다.
에러코드를 console.log로 찍어보며 해결하려고 했지만 이것만으로 해결하기는 무리인 것을 느꼈다.
그래서 우선 서버, 클라이언트, 데이터베이스의 기본 틀만 구현해놓고 크롬 console창과 요청/응답을 확인하며 하나씩 해결하였다.

가장 오래 걸린 문제는 cookie에 유효한 jwt토큰을 전달해주고 그것을 이용하여 서버, 클라이언트 간 인증, 확인하는 절차였다.
바보같이도 나는 accessToken을 잘 만들어 놓고 req.headers["cookie"]에서 split으로 잘못 끊어주어 며칠을 헤맸다.
문제점을 찾고 어이가 없었다. 계속 console.log를 찍어보며 확인했는데 왜 토큰 뒤에 붙어있던 %가 안보였는지 모르겠다.
다행?스럽게도 %를 split으로 잘 구분해주니 기능구현은 정상적으로 이루어졌다.
또 signup(회원가입) 응답으로 409번 Conflict Code EEROR가 발생했다.
그래서 문제를 해결하기 위해 검색을 해보니 409번 Conflict 에러가 회원가입 구현시 나타나면 email이나 id가 중복될 때 발생한다고 한다.
더 찾아보니 [리소스의 현재 상태와 요청의 충돌] 라고한다.
결국 서버의 상태와 요청이 충돌하는 경우 클라이언트가 충돌을 수정하여 다시 요청을 보낸 경우가 Conflict라는 것이다.
하도 많은 오류를 해결 하다보니 어떻게 해결된지는 잘 모르겠지만 아마 findOrCreate를 findOne으로 잘못써서 새로운 유저정보로 회원가입 생성이 안되서 그런 것 같다.

그리고 아직 해결 못한 문제가 하나 있다. signup(회원가입)과, signin(로그인)은 정상적으로 응답이 오고 창도 넘어가지만 mypage에서 유저 정보 렌더가 되지 않는다.
이것 또한 많은 시간이 걸리고 엄청난 구글링을 해야 하겠지만 하나씩 기능 구현을 해나가며 큰 재미를 느끼고 있다.
목표기간을 정해 목표한 날까지 꼭 이 문제를 해결해 나갈 것이고 refreshToken 생성, 인증도 시도해 꼭 성공하도록 하겠다.
그리고 토큰인증을 확실히 익히고 Oauth 인증도 구현해 보도록 해야겠다.

profile
코딩 배우기

0개의 댓글