콘텐츠로 이동
✍️ 수정가능누구나 고쳐도 됩니다. 고치면 하단 frontmatter의 갱신일·작성자·변경요약을 남겨 주세요.작성 Claude · 2026-06-04 · v12 재편·raw 컴파일·인간화

로그인 PRD

요지

로그인은 세 역할(강사·학생·학부모)이 매번 거치는 인증 관문이라 안전성과 편의성을 동시에 잡아야 한다. JWT 토큰으로 로그인·로그아웃·자동 로그인·세션 유지를 제공하되, 비밀번호를 반복해서 틀리는 무차별 대입은 계정 잠금으로 막는다. MVP-A 첫 마일스톤 기능이다.

목표 & 성공 기준 (지표)

토큰 기반으로 안전하게 인증하고, 한 번 로그인하면 끊김 없이 세션을 이어 가고, 무차별 대입은 막는 것이 목표다.

지표는 로그인 성공률, 자동 로그인 성공률, 계정 잠금 발생률, 그리고 세션이 끊긴 뒤 다시 로그인으로 돌아오는 전환율을 본다. 잠금이 너무 잦으면 정상 사용자까지 막고 있다는 신호라 함께 지켜본다. 측정에 쓰는 GA 이벤트(auth_login_success·auth_login_failure·auth_auto_login_success 등) 전체는 frd에 있다.

대상 페르소나

로그인 자체는 역할을 가리지 않는 공통 인증이라 강사·학생·학부모 모두가 같은 화면을 쓴다. 역할별로 갈리는 권한과 접근 범위는 member §7에서 다룬다.

범위 (포함 / 제외)

여기서 다루는 건 이메일·비밀번호 로그인, 로그아웃, Access 토큰 재발급, "상태 유지"를 통한 자동 로그인, 5회 실패 시 계정 잠금, 그리고 계정 상태별 차단이다.

소셜 로그인(소셜 로그인 (OAuth2.0))과 계정 복구(계정 복구 (Account Recovery))는 각자 별도 기능으로 빠졌고, 5회 실패 시 CAPTCHA는 옵션으로 두되 MVP에서는 미룬다.

요구사항 (유저 스토리 · 기능)

등록된 사용자가 /login에서 이메일·비밀번호로 로그인하면 /dashboard로 보낸다. "로그인 상태 유지"를 켜 두면 브라우저를 닫았다 다시 들어와도 자동으로 로그인된다. 반대로 이미 로그인한 사람이 /login에 직접 들어오면 메인으로 돌려보내고, 헤더 아바타에서 로그아웃하면 세션과 토큰을 전부 지운다.

세부 정책은 이렇게 잡았다.

구분 내용
주요 기능 로그인 · 로그아웃 · 자동 로그인 · 상태 유지
인증 방식 JWT Access + Refresh (Refresh는 HttpOnly+Secure+SameSite 쿠키). 토큰 수명 값은 인프라 설정에 둔다
보안 정책 토큰 만료·재발급, 5회 실패 시 계정 잠금(LOCKED), 로그아웃 시 세션 초기화, CSRF는 SameSite 쿠키 + 서버 검증
검증 규칙 로그인·회원가입 공용 입력 검증(V-01~12·19) — 전체 표는 회원가입 개발 명세 (FRD)가 기준
편의 비밀번호 보기/숨기기, 회원가입 링크, "로그인이 안되시나요?"로 복구 진입(계정 복구 (Account Recovery))

근거 (피드백·아이디어·리서치 source)

MS1 로그인 기획서(v2)와 IA 문서, 로그인·회원가입이 공유하는 통합 Validation 규칙에서 도출했다. 출처는 frontmatter source에 모았고, 관련 이슈는 Jira BTS-244.

오픈 이슈

  • 5회 실패 시 CAPTCHA를 넣을지 — 지금은 옵션으로만 열어 뒀다.
  • 잠긴 계정은 비밀번호 재설정(계정 복구 (Account Recovery))으로만 풀게 했는데, 관리자가 수동으로 푸는 운영 절차는 아직 정하지 못했다.