FilterInovationSecurityMetadataSource V2 - FactoryBean

Shaun·2022년 2월 13일
1

Spring Security

목록 보기
13/19

저번 시간에는 metadataSource 인터페이스를 구현하여 FilterSecurityInterceptor를 커스터마이징 하였다.

권한 추출은 저번시간에 했으니 이번 시간에는 URL정보와,권한정보를 map형태로 저장하는 코드를 구현해보자.

UrlResourcesMapFactoryBean

  • DB로부터 얻은 자원정보/권한 을 RequestMap을 빈으로 생성해서 URLFilterInvocationSecurityMetadataSource에게 전달

  • 즉 DB로부터 얻은 데이터를 map형태로 만들어 주는 작업

  • DB에서 가져온 자원정보,권한정보 데이터를 map으로 형태로 가공 시켜주는 service 와 그 가져온 Map 을 저장할 공간을 만들어준다

  • 실질적 역활을 담당하는 부분이다. service에서는 map으로 가공된 데이터를 resourceMap에 넣어준다.

  • 싱글톤으로 단하나만 존재하게 만들것이며 오브젝트 타입은 LinkedHashMap이다.

SecurityResourceService

  • DB에서 가져온 자원정보,권한정보 데이터를 map형태로 가공시키는 공간

  • 레파지토리에서 데이터를 가져온다.

  • 가져온 데이터를 반복문을 돌려 권한정보를 담는 List공간을 만든뒤 Resources 엔티티의 RoleSet(Many to Many) -> 즉 한개의 리소스에는 여러개의 role이 존재한다는 사실

  • 한개의 Resources에 해당하는 여러개의 role을 반복문을 돌려 미리 생성해둔 List<.ConfigAttribute> 저장해준다.
    (SecurityConfig 는 ConfigAttribute 인터페이스의 구현체)

  • Role(권한)을 저장한 List를 result에 key값(자원정보)와 함께 넣어 준다.

  • 그 결과값을 resourceMap에 저장해준다.

  • map형태로 가져온 데이터를 저번시간에 만든 MetadataSoruce에게 넘겨준다. 그러면 MetadataSource가 넘겨준 map 형태에서 권한정보를 추출할 것이다.

  • map 데이터를 MatadataSource에 requestMap에게 전달해주기

  • 그러면 map 형태의 데이터에서 권한정보를 추출할 것이다.
profile
호주쉐프에서 개발자까지..

0개의 댓글