로그인과 자원별 권한
세션 로그인과 자원별 인가로 타인의 대여 정보를 보호합니다.
진도 0%
레슨
- 세션 로그인
비밀번호 해시와 쿠키·세션 전달 조건을 확인합니다.
- 회원과 관리자 권한
인증 여부와 자원 소유권 검사를 분리합니다.
- CSRF와 요청 보호
세션 기반 변경 요청의 CSRF 방어와 쿠키 정책을 확인합니다.
- 권한 회귀와 개인정보
권한 행렬과 민감 정보 처리 범위를 테스트로 고정합니다.
로그인과 자원별 권한 미션
앞 모듈의 결과를 이어서 회원별 대여 자원과 관리자 도서 권한을 구현합니다.
요구사항
- 테스트 전용 회원을 해시 비밀번호로 적재하며 소스·로그에 평문을 남기지 않습니다.
- 로그인 401, 권한 부족 403, 소유자가 아닌 대여 자원 404 정책을 적용합니다.
- 자기 대여 조회와 관리자 도서 수정·삭제 및 CSRF 검사를 구현합니다.
- 공개 도서 GET은 유지하고 도서 추가도 ADMIN만 허용합니다. 관리자는 타인의 개인 대여 열람권을 갖지 않습니다.
- PATCH /loans/{id}/note는 소유자만 허용하며 null·누락·UTF-16 201 코드 단위는 400, 빈 문자열·200 코드 단위는 허용합니다. 메모는 loan_notes 별도 테이블에 저장합니다.
- 로그인·로그아웃에도 CSRF를 유지합니다. 토큰 없는 변경 요청은 인증 검사보다 먼저 403이 될 수 있어 익명 401 검사는 유효 토큰 조건으로 분리합니다.
완료 기준
- 익명·다른 회원·소유자·관리자의 권한 행렬 테스트가 통과합니다.
- CSRF 누락 변경 요청 403·올바른 토큰 요청 성공을 확인합니다.
- 거부된 요청은 DB를 변경하지 않으며 응답에 타인 정보·비밀번호 해시가 없습니다.
- report.py로 기존 95개와 보안 27개, 누적 122개 검사의 실패·오류·건너뜀 0을 확인합니다.
- 실제 폼 로그인 세션·/csrf 응답 토큰을 사용하고 세션 ID 교체·로그아웃 무효화·다른 세션 토큰 거절을 확인합니다.
- /me·대여 DTO의 엄격 JSON 필드 허용 목록과 타인·없는 대여 404 본문 동일성을 확인합니다.
./mvnw test미션 시작 코드
모범 답안
모범 답안 내려받기검토 기준
- 앞 단계의 계약과 테스트를 유지하며 변경 이유를 설명합니다.
- 정상·경계·실패 경로의 근거와 재현 절차를 제출합니다.