Strategy는 사용자를 확인하고 Guard는 요청 통과를 결정한다
로그인 흐름은 비밀번호 비교 코드가 아니라 DTO, Strategy, Guard, 세션/JWT 정책이 이어지는 인증 계약이다.
01 DTO
username/password 모양을 먼저 고정한다.
02 Strategy
사용자 조회, 비밀번호 비교, 잠금 상태 판단을 수행한다.
03 Guard
성공하면 request.user를 채우고 실패하면 401로 닫는다.
04 Session/JWT
세션 저장 또는 토큰 발급 중 하나의 정책으로 이어간다.
사용자 없음
존재 여부를 숨기고 내부 로그에만 원인을 남긴다.
비밀번호 오류
시도 횟수와 잠금 정책을 AuthService에서 함께 처리한다.
잠금/비활성
컨트롤러 진입 전에 Guard 단계에서 차단한다.
경계: 컨트롤러는 비밀번호를 직접 비교하지 않고, 이미 검증된 request.user로 응답만 만든다.