작성
·
75
0
안녕하세요 제로초님, 로그인 관련해서 어려움이 있어서 질문드립니다.
현재 사용하고 있는 기술 스택은 다음과 같습니다.
프론트 : next.js/백엔드 : express
로그인을 구현했고 백엔드에서 토큰을 만들어서
refreshToken 은 httpOnly cookie 에,
accessToken 은 응답 바디에 넣어서 보내주도록 만들었습니다.
라이브러리 사용하지 않고, next.js 에서 로그인 api 호출하고
token 은 전역으로 관리하고,
토큰 만료시 토큰 재발급하고,
새로고침 시에도 로그인이 유지되도록(httponly 쿠키로) fetchWrapper 을 따로 만들었습니다.
-> fetch 은 axios 와 달리 interceptor 같은거 못사용하니까요
하지만 이는 클라이언트 컴포넌트에서만 가능하고, 서버에서는 토큰 만료시 재시도 로직이 불가능하다는 것을 알게되었습니다.
코드도 지저분해지는 것같고.. 그래서 다른 해결책이 있나해서 이 강의의 로그인 부분을 보고있습니다.
근데 auth,js 는 env 에 jwt secret 키를 넣어야하는걸 보니 클라이언트에서 토큰을 관리하는 것 같더라구요
제 생각은 auth.js 는 백엔드 서버에서 쿠키를 관리하는 방식과 함께 사용하기에는 맞지 않다는 느낌을 들었습니다.
그래서 next.js 에서 로그인 및 권한 관리를 쉽게 사용하려면 결국 auth.js 를 사용해야만 하는 것인지.... 궁금합니다. 그렇게된다면 백엔드에서 토큰 만드는 로직을 없애는 것이 맞는지 궁금합니다.
감사합니다.
답변 1
0
서버에서도 토큰 만료시 재시도를 하시려면 액세스토큰도 쿠키로 갖고있으셔야지만 가능합니다. 그래야 서버에서 엑세스토큰에 접근해 토큰 만료가 되었는지 체크할 수 있고, 재시도도 가능합니다. 그렇게 한다면 auth.js도 같이 쓰실 수 있지 않나 싶습니다.