Devin.KR

로그인과 자원별 권한

세션 로그인과 자원별 인가로 타인의 대여 정보를 보호합니다.

진도 0%

레슨

  1. 세션 로그인

    비밀번호 해시와 쿠키·세션 전달 조건을 확인합니다.

  2. 회원과 관리자 권한

    인증 여부와 자원 소유권 검사를 분리합니다.

  3. CSRF와 요청 보호

    세션 기반 변경 요청의 CSRF 방어와 쿠키 정책을 확인합니다.

  4. 권한 회귀와 개인정보

    권한 행렬과 민감 정보 처리 범위를 테스트로 고정합니다.

로그인과 자원별 권한 미션

앞 모듈의 결과를 이어서 회원별 대여 자원과 관리자 도서 권한을 구현합니다.

요구사항

  • 테스트 전용 회원을 해시 비밀번호로 적재하며 소스·로그에 평문을 남기지 않습니다.
  • 로그인 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
미션 시작 코드
모범 답안모범 답안 내려받기

검토 기준

  • 앞 단계의 계약과 테스트를 유지하며 변경 이유를 설명합니다.
  • 정상·경계·실패 경로의 근거와 재현 절차를 제출합니다.