로그인 계속 유지되게 하고 싶을 때, 이렇게 물어봐요

지피티갓
2,192
1 0
Next.js 프로젝트에서 사용자 로그인 상태를 유지하는 기능, 처음부터 직접 짜려면 은근히 복잡하잖아요.
JWT를 활용하면서도 보안까지 고려하려면?
아래처럼 프롬프트를 활용하면 백엔드-프론트엔드 연동까지 깔끔하게 구현 가능해요!
디자인은 각자 입맛대로 입히면 되고, 기본 틀부터 같이 만들어봐요

프롬프트

복사
넌 Next.js 13 이상(App Router 기반)을 활용한 모던 웹 애플리케이션 구축에 능숙한 시니어 풀스택 개발자야. 나는 현재 로그인 유지 기능을 구현하고자 하는데, 다음과 같은 조건과 환경을 바탕으로 완성도 높은 인증 로직을 구현하고 싶어. 아래 내용을 기반으로 전체 구조와 코드를 작성해줘.

[프로젝트 환경]
- 프론트엔드 및 백엔드 모두 Next.js App Router 기반
- 클라이언트와 서버 모두 Next.js 내에서 동작 (API route 사용)
- TypeScript 사용
- 데이터베이스는 PostgreSQL (prisma ORM 사용)
- JWT는 access token과 refresh token을 모두 사용하며, access token은 httpOnly 쿠키에 저장

[기능 목표]
1. 로그인 기능
   - 사용자가 이메일/비밀번호로 로그인 시 access token과 refresh token을 발급
   - access token은 httpOnly 쿠키로 설정하여 클라이언트 JS에서 접근 불가하게 함
   - refresh token은 서버 DB에 저장 및 함께 쿠키에도 저장
   - 비밀번호는 bcrypt로 암호화되어 검증됨

2. 로그인 상태 유지
   - 사용자가 페이지 새로고침하거나 재방문해도 access token이 쿠키에 있으면 자동 로그인 처리
   - access token이 만료되었을 경우 refresh token으로 access token 재발급
   - refresh token의 유효성, 탈취 방지를 위한 보안 고려 포함

3. 서버사이드 렌더링에서의 인증 유지
   - `getServerSideProps`나 App Router의 `server component`에서 쿠키를 파싱하여 사용자의 로그인 여부 판단
   - 유효하지 않은 토큰이면 로그인 페이지로 리디렉션 처리

4. 로그아웃 기능
   - access token과 refresh token 모두 쿠키에서 제거
   - DB에 저장된 refresh token도 삭제하여 재사용 차단

5. 보안 고려사항
   - JWT 토큰은 서명(Sign) 알고리즘은 HS256 사용

댓글 작성

코딩 테스트 마스터 되기: 알고리즘 사고력의 비밀

개발자로서 가장 당혹스러운 순간은 언제일까요? 아마도 코딩 테스트에서 문제를 읽고 어디서부터 시작해야 할지 모르는 그 ...

청중을 사로잡는 창의적 프레젠테이션 프롬프트

"또 PPT로 읽어주는 건가요?" 프레젠테이션이 시작되기도 전에 청중들의 눈이 벌써 죽어있는 모습, 발표자라면 누구나 두려워...

프롬프트

ChatGPT

훌륭한 예술은 좋은 인프라에서 자란다

ChatGPT

내 것이라고 주장할 수 있는 것과 증명할 수 있는 것은 다르다

ChatGPT

한 번 잃은 신뢰는 열 번의 노력으로도 회복하기 어렵다

ChatGPT

한 집에 여러 세입자, 각자의 프라이버시는 지키면서

ChatGPT

로봇이 일하는 동안 나는 더 의미 있는 일에 집중한다

ChatGPT

아하! 순간은 우연이 아니라 준비된 마음에게 찾아온다

ChatGPT

무너진 것에서 더 아름다운 것이 피어날 수 있다 예술 리빌딩 프롬프트

ChatGPT

숨길 게 없으니 당당하고, 투명하니 신뢰받는다

ChatGPT

벽만 허물었는데 학습 효과가 3배 늘었다니!

ChatGPT

물리적 케이블의 한계를 소프트웨어로 뛰어넘다

ChatGPT

재해는 언제 올지 모르지만, 복구는 미리 준비할 수 있다

ChatGPT

좋은 질문이 좋은 답보다 더 중요한 시대가 왔다

ChatGPT

실패가 허용되는 공간에서만 진짜 혁신이 태어난다

ChatGPT

시장을 예측하는 사람은 많지만, 예측이 틀렸을 때 대비하는 사람은 드물다

ChatGPT

좋은 강의를 만드는 것과 좋은 학습 환경을 만드는 것은 완전히 다른 일이다

ChatGPT

컨테이너는 가볍고 빠르지만, 보안은 무겁고 복잡하다