유지상

요청 경계로 분리한 이벤트 권한 검사

컨트롤러마다 반복되던 역할·이벤트 소속 검사를 어노테이션과 인터셉터로 분리하고, 요청 경계에서 사용자와 경로 리소스를 조합해 검사했습니다.

Spring MVC, Spring Security, HandlerInterceptor

비즈니스 로직에 반복되던 권한 검사

역할과 이벤트 소속을 확인하는 코드가 컨트롤러의 비즈니스 로직마다 반복되고 있었습니다. 권한 정책과 기능 코드를 분리하기 위해 메서드에는 필요한 정책만 @AuthZ로 표시하고 실제 검사는 공통 요청 경계로 옮겼습니다.

인터셉터에서 조합한 세 가지 정보

권한 판단에는 요청을 처리할 메서드, 로그인 사용자와 URL의 eventId가 함께 필요했습니다. 인터셉터는 HandlerMethod에서 @AuthZ 정책을 읽고 SecurityContext의 사용자 ID와 경로 변수를 조합해 주최자·심사위원·이벤트 참여 관계를 검사했습니다. 검사를 통과한 요청만 컨트롤러를 실행했습니다.

실패 경로를 포함한 검증

각 역할의 허용·거절뿐 아니라 인증 정보가 없는 요청, 잘못된 eventId와 권한 없는 사용자를 가정한 테스트를 작성했습니다. 테스트를 통과한 권한 구조를 운영에 반영했습니다.

소속 경력