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

지피티갓
2,213
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 사용

댓글 작성

코드의 숨겨진 병목 현상, 발견하는 순간 세상이 바뀐다!

개발을 하다 보면 누구나 경험하는 순간이 있습니다. 기능은 완벽하게 동작하는데, 왠지 모르게 속도가 느리거나 메모리 사용...

지피티가 준 로또 번호 당첨되라!!!

로또에 진심인 편이라 예전에는 회차별로 다 모아서 직접 패턴 분석한 적도 있음당첨금 5만원이 최대이긴 했었는데..ㅋㅋㅋ ...

프롬프트

ChatGPT

한 서버가 다운되자 전체 서비스가 마비된 그날

ChatGPT

“결과만 알려주고 과정은 알려주지 않는” 상사가 만든 악순환

ChatGPT

“누가 범인일까요?”라는 질문에 “빨간 모자”라고 답한 아이

ChatGPT

엑셀표에 숨겨진 드라마를 찾아낸 순간

ChatGPT

거만한 천재냐, 진정한 리더냐… 예술계에서 살아남는 법

ChatGPT

마지막 순간에 욕심 부려 잃은 수익률 40%의 아픔

ChatGPT

공교육으로는 해결되지 않는 그 사이의 공백들

ChatGPT

고객이 “왜 이렇게 자주 먹통이 되나요?”라고 물었을 때

ChatGPT

99.9%와 99.99%의 차이가 매출 1억원이었다

ChatGPT

이메일만으로는 절대 해결되지 않는 것들

ChatGPT

20평 작업실에서 100평 스튜디오 못지않은 영감을 얻는 법

ChatGPT

기획서대로 했는데 왜 아무도 감동하지 않을까?

ChatGPT

첫 투자에서 30% 날린 후 깨달은 진짜 전략

ChatGPT

40명이 한 교실에 앉아서 정말 배움이 일어날까?

ChatGPT

하나의 거대한 앱이 무너뜨린 우리 팀의 야심

ChatGPT

팀장 된 첫날, 모든 팀원이 나를 외면했던 그 순간