기기 등록 및 접속 정책
1. 목적
사용자 계정의 불법 공유를 방지하면서도, 정당한 다기기 이용(예: 부모-자녀 간 사용)을 허용하기 위해, 기기 등록 및 접속 정책을 정의합니다.
2. 기기 등록 원칙
- 하나의 계정당 최대 2대의 기기에서 콘텐츠 이용 가능 (
MAX_ACTIVE_DEVICES=2) - 등록된 기기 수가 2대 이하인 경우, 로그인 시 자동으로 해당 기기를 등록함
- 동일 기기라도 앱 삭제/재설치, 브라우저 변경 등의 경우 새 기기로 인식될 수 있음
3. 기기 등록 정보
기기 등록 시 다음 정보가 UserDevice 모델에 저장됩니다:
| 필드 | 설명 | 예시 |
|---|---|---|
device_id | 기기 고유 식별자 (유니크) | UUID 또는 플랫폼 제공 ID |
device_type | 운영체제 유형 | ios, android |
device_model | 기기 모델명 | iPhone 15 Pro, Galaxy S24 |
app_version | 앱 버전 | 1.2.3 |
timezone | 기기 타임존 | Asia/Seoul |
fcm_token | Firebase Cloud Messaging 토큰 | 푸시 알림 발송용 |
push_enabled | 푸시 알림 허용 여부 | true / false |
is_active | 기기 활성 상태 | true / false |
last_active | 마지막 활동 일시 | 자동 갱신 (auto_now) |
created_at | 기기 등록 일시 | 자동 생성 |
4. API 엔드포인트
| HTTP | 엔드포인트 | 설명 |
|---|---|---|
POST | /api/users/devices/register/ | 기기 등록 (로그인 시 자동 호출) |
GET | /api/users/devices/ | 내 등록 기기 목록 조회 |
5. 기기 초과 시 처리 방식
- 3번째 기기에서 로그인 시, 다음과 같은 팝업이 자동 노출됨:
등록 가능한 기기 수를 초과했어요. 아래에서 한 대를 로그아웃하고 이 기기에서 계속 이용해 주세요.
- 팝업에는 현재 등록된 2대의 기기 정보가 간단히 표시됨 (기기명 + 마지막 사용일 기준 / 최대 15자 표기)
예시:
iPhone 14 – 오늘 사용
Galaxy S24 – 2일 전 사용
6. 다른 기기 로그인 시 자동 로그아웃
- 새 기기에서 로그인이 이루어지면, 초과되는 기존 기기의
is_active가False로 변경됩니다. - 비활성화된 기기에서 API 요청 시 JWT 인증 과정에서
logged_in_elsewhere에러가 반환됩니다. - 클라이언트는 이 에러를 감지하여 자동 로그아웃 처리 및 "다른 기기에서 로그인되었습니다" 안내를 표시합니다.
7. 기기 관리 규칙
- 사용자는 직접 기기를 해제할 수 있음 (마이페이지 > 기기 관리)
- 기기 해제 시 해당 기기에서 자동 로그아웃됨
- 같은 기기에서 앱을 삭제 후 재설치하면 새로운
device_id가 발급되어 별도 기기로 인식됨