Spring Security가 관리하는 사용자 역할을 기반으로 Spring MVC 애플리케이션에서 모델 컨텐츠를 생성하는 데 문제가 있습니다.Spring MVC와 Spring 보안을 이용한 사용자 역할에 기반한 모델 생성하기
내 응용 프로그램 (단순화 된 예)에서는 ROLE_USER 및 ROLE_ADMIN이라는 두 가지 역할을 정의했습니다. 또한 두 개의 개체 목록 (독자는 ADMIN에서만 사용 가능)과 책 (ADMIN과 USER 모두)을 표시하는 페이지가 있습니다.
JSP 페이지의 조건부 표시 목록에는 문제가 없지만 모델을 먼저 준비해야하며 현재 사용자가 ADMIN이 아닌 경우 독자 목록을로드하고 싶지는 않습니다.
자바 코드에서 스프링 EL을 사용하여 사용자가 역할 (hasRole ('ROLE_ADMIN'))을 지정했는지 판단 할 수 있지만 수동으로 해당 코드를 평가할 수있는 방법을 찾지 못했습니다.
컨트롤러 소스 코드에서 Spring EL 핸들러를 호출 할 수있는 방법이 있는가, 아니면 모델을 조건부로 채우는 더 나은 솔루션이 (아키텍처 또는 디자인 패턴 레벨에서) Java 코드에서 직접 역할을 검사하는 것보다 나은가요?
제안 해 주셔서 감사합니다. 불행히도 두 솔루션 모두 결함이 있습니다. 먼저 성능 컨텍스트에서 문제가 있습니다. 두 번째는 주석 된 메소드를 호출하면 프로그램 흐름을 제어하는 가장 명확한 방법이 아닌 보안 예외가 발생할 수 있습니다. 두 가지 모두 원하는 효과를 제공 할 수 있지만 깨끗한 솔루션을 찾고 있습니다. –
사용자가 올바른 권한을 가지지 않으면 메서드가 실행되지 않고 미리 정의 된 값 (내 경우 빈 목록)을 반환하게하는 주석을 사용하는 것이 좋을 것이라고 생각합니다. 하지만 그건 단지 희망적인 생각 일뿐입니다.) –