개발자

Next.js 인터셉터 질문드립니다

2023년 09월 04일조회 492

Next애서 인터셉터 구현할때 getserversideprops에서 사용하는 axios 인터셉터와 클라이언트 컴포넌트에서 사용하는 인터셉터를 따로 구현해야 하나요? 리액트에서 사용하던 인터셉터 로직을 가져와서 적용해봤는데 클라이언트 컴포넌트에서만 작동해서 질문드립니다. 혹시 맞다면 서버 컴포넌트쪽은 어떤식으로 구현하는지 알려주시면 감사하겠습니다. 인터셉터 용도는 사버에서 요청해서 응답으로 받은 엑세스 토큰을 헤더에 넣고 토큰이 유효한지 검사하는 용도이고 page router기반입니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

인기 답변

손정현님의 프로필 사진

안녕하세요! 서버 쪽 에러 예시랑 코드가 어떻게 구현되어있는지 몰라서 상세한 답변을 드릴 수 없는 점 양해 부탁드려요. 우선, axios interceptor를 getServerSideProps에서 쓸 수 있어요. 예상되는 문제점 및 해결 방법: - axios.interceptor가 디폴트로 async 하게 돌아가서 await을 걸어줘야하거나 sync로 돌게끔 설정해줘야함 (https://axios-http.com/docs/interceptors) 참고 자료: - https://stackoverflow.com/questions/73611326/nextjs-ssr-axios-global-header-getserversideprops - https://github.com/axios/axios/issues/3870 추가적으로 next.js 에서도 요청이 전달되기 전에 돌아가는 middleware를 설정해줄 수 있어요. - https://nextjs.org/docs/pages/building-your-application/routing/middleware 구현 코드 예시나 상세한 에러 설명이 있다면 다른 분들이 답변 다시는데 도움이 될 것 같아요 :)

profile picture

익명

작성자

2023년 09월 05일

안녕하세요 답변 감사드립니다. 인터셉터의 사용 용도가 헤더에 엑세스 토큰을 넣는게 주요한데 클라이언트에서는 전역 상태 관리자로 자바스크립트 메모리에서 관리할 수 있지만 서버 컴포넌트에서는 불가능한것 같습니다. 이런 경우에는 클라이언트 컴포넌트로 인터셉터를 구현해서 사용하고 서버 컴포넌트에서는 미들웨어를 사용하는게 좋을까요? 또, 엑세스 토큰이 쿠키에도 있다는 가정하에 미들웨어에서도 요청 헤더에 엑세스 토큰을 넣을 수 있을까요?

손정현님의 프로필 사진

손정현

엔지니어2023년 09월 05일

"서버 컴포넌트에서 토큰을 관리할 방법이 없으니 미들웨어를 사용하는게 좋을까요? 엑세스 토큰이 쿠키에도 있다는 가정하에 미들웨어에서도 요청 헤더에 엑세스 토큰을 넣을 수 있을까요?" > 넵, 미들웨어 사용하는 것도 하나의 방법이죠. 다만, 말씀하신 것처럼 쿠키에 필요한 값이 있어야지 넣을 수 있을 것 같아요! 공식 문서 좀만 내려보시면 쿠키 사용 예시 있어요 :) - https://nextjs.org/docs/pages/building-your-application/routing/middleware#using-cookies

profile picture

익명

작성자

2023년 09월 05일

감사합니다 도움 많이 되었습니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!