728x90

- DB로부터 ResourceMap을 만들어 생성자로 MapBaseMethodSecurityMetadataSource에 전달하면 된다.
-
MethodResourcesMapFactoryBean
-
DB로 부터 얻은 권한/자원 정보를 ResourceMap을 빈으로 생성해서 MapBasedMethodSecurityMetadataSourceMapBasedMethodSecurityMetadataSource 에 전달
-

- DefaultAdvisorAutoProxyCreator가 MethodSecurityMetadataSourceAdvisor를 통해 프락시 객체를 생성한다.
- MethodSecurityMetadataSourcePointcut이 프락시 생성 대상 클래스 탐색, advice 등록 대상 메소드를 탐색한다.
- 클래스 정보, 메소드 정보를 MapBaseMethodSecurityMetadataSource에 전달하고, DB를 가지고, 데이터를 생성해 준다.
- DefaultAdvisorAutoProxyCreator가 이정보를 가지고 프록시 객체를 생성하고 MethodSecurityInterceptor에서 advice로 생성이 된다.
RequestMap 작성

- MethodResourcesFactoryBean을 통해 빈을 생성하도록 한다.
-
public class MethodResourcesFactoryBean implements FactoryBean<LinkedHashMap<String, List<ConfigAttribute>>> { private SecurityResourceService securityResourceService; private LinkedHashMap<String, List<ConfigAttribute>> resourcesMap; public void setSecurityResourceService(SecurityResourceService securityResourceService) { this.securityResourceService = securityResourceService; } @Override public LinkedHashMap<String, List<ConfigAttribute>> getObject() { //securityResourceService가 Map을 만들어 resourcesMap에 넣어줄 것이다 if(resourcesMap == null){ //생성해 주어야한다. init(); } return resourcesMap; } private void init() { //DB로 부터 메핑된 자원을 얻는다 resourcesMap = securityResourceService.getMethodResourceList(); } @Override public Class<?> getObjectType() { return LinkedHashMap.class; } @Override public boolean isSingleton() { return FactoryBean.super.isSingleton(); } }
728x90
'스프링 시큐리티 > 실전프로젝트 - 인가 프로세스 DB 연동 서비스 계층 구현' 카테고리의 다른 글
| ch08. ProxyFactory 를 활용한 실시간 메소드 보안 구현 (0) | 2022.01.27 |
|---|---|
| ch07. AOP Method 기반 DB 연동 - ProtectPointcutPostProcessor (0) | 2022.01.27 |
| ch05. AOP Method 기반 DB 연동 - MapBasedSecurityMetadataSource (2) (0) | 2022.01.26 |
| ch04. AOP Method 기반 DB 연동 - MapBasedSecurityMetadataSource (1) (0) | 2022.01.26 |
| ch03. 어노테이션 권한 설정 - @PreAuthorize, @PostAuthorize, @Secured, @RolesAllowed (0) | 2022.01.25 |