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