Skip to content

BackEnd‐Data‐User

LeeSongMi edited this page Oct 10, 2026 · 2 revisions

🗃️ Data

🗃️ User

정의

User는 카카오 간편로그인을 통해 인증된 사용자를 표현하는 데이터이다.

카카오 계정의 고유 식별자(kakaoId)를 기준으로 저장되며, 하나의 User는 여러 개의 Todo를 가질 수 있다 (1:N).

역할 및 요구사항

  • 카카오 로그인 시 발급되는 사용자 식별자를 기준으로 사용자를 식별하고, DB에 없으면 새로 생성(upsert)한다.
  • 로그인할 때마다 카카오 계정의 닉네임·프로필 사진을 최신 값으로 갱신한다.
  • 하나의 User는 여러 개의 Todo를 소유할 수 있다 (1:N).
  • User가 삭제되면 소유한 Todo도 함께 삭제된다 (Cascade).

필요 데이터 항목

Field Type Nullable Description
id UUID / BIGINT ❌ User의 고유 식별자 (Primary Key)
kakaoId VARCHAR ❌ 카카오 계정 고유 식별자 (Unique)
nickname VARCHAR ⭕ 카카오 계정 닉네임
profileImage TEXT ⭕ 카카오 계정 프로필 사진 URL
createdAt TIMESTAMP ❌ User 최초 생성 일시
updatedAt TIMESTAMP ❌ User 정보 최종 수정 일시

로그인 흐름

  1. 카카오 인가 코드 요청 — CSRF 방지용 state nonce를 쿠키에 저장해 함께 보낸다.
  2. 콜백에서 state를 검증한 뒤, 인가 코드를 액세스 토큰으로 교환하고 카카오 프로필을 조회한다.
  3. kakaoId 기준으로 User를 upsert (닉네임·프로필 사진을 최신 값으로 갱신).
  4. 세션 JWT를 발급해 httpOnly 쿠키로 내려준다 — "자동 로그인" 선택 여부에 따라 7일 또는 브라우저 세션(탭을 닫으면 만료) 수명을 가진다.
  5. 이후 요청은 이 쿠키를 서버가 매번 검증해 사용자를 식별한다. 클라이언트에는 로그인 여부만 동기적으로 판단할 수 있는 별도의 비-httpOnly 힌트 쿠키를 함께 내려주는데, 이 값은 UX 분기 (게스트/로그인 중 어느 저장소를 쓸지)에만 쓰이고 인가 목적으로는 신뢰하지 않는다.

💻 Code

🖥️ FrontEnd

⚙️ BackEnd

Clone this wiki locally