2010-06-07 3 views
2

기본 보안 (즉, 사용자가 자신의 역할에 따라 볼 수있는 페이지) 용으로 기존 애플리케이션으로 Spring-Security를 ​​구성하려고합니다. ApplicationContext.xml 대신 java에서 각 페이지에 필요한 역할을 설정할 수 있는지 궁금해했습니다.스프링 - 보안을 프로그래밍 방식으로 구성 할 수 있습니까?

아이디어는 우리 데이터베이스의 테이블에 저장하는 것이므로 재배포없이 쉽게 변경할 수 있습니다. 이것이 가능한가? 방법?

답변

5

예, 스프링 - 보안을 프로그래밍 방식으로 구성 할 수 있습니다. 그러나 나는 그것이 당신이 원하거나 필요로하는 것이라고 생각하지 않습니다.

ApplicationContext.xml 대신 java에서 각 페이지에 필요한 역할을 설정할 수 있는지 궁금해졌습니다.

각 리소스/페이지에 대한 규칙 (또는 기타)을 가져 오도록 데이터베이스를 쿼리하는 고유 한 AccessDecisionManager 클래스를 구현할 수 있습니다. 이것은 SpringSecurity 매뉴얼 Section IV에 설명되어 있습니다.

또는 사용자 정의 액세스 제어 논리를 MVC 컨트롤러에 내장 할 수 있습니다. SpringSecurityContext을 사용하여 요청의 Authorization 개체를 가져오고 신원 및/또는 권한을 제거하고 원하는대로 의사 결정을 구현하십시오.

+0

정말 필요한 것을 지적 해 주셔서 감사합니다. 방금 설정을 마치고 꽤 잘 작동하는 것 같습니다. –

1

우리는 인터셉터를 사용하여이 작업을 수행했습니다. 기본적으로 MethodInterceptor는 원하는 모든 메소드 호출을 프록시합니다 (즉, 데이터베이스에서 객체를 가져 오는 것). 그런 다음 프로그래밍 방식으로 개체를 가로 채고 현재 사용자를 확인하고 액세스 제어 측면에서 원하는 모든 작업을 수행 할 수 있습니다. 이는 데이터베이스에 액세스 권한이있는 사용자 목록 (따라서 코드를 수정하지 않고도 변경할 수있는 목록)을 쿼리하는 것입니다.

관련 문제