저번 시간에는 metadataSource 인터페이스를 구현하여 FilterSecurityInterceptor를 커스터마이징 하였다.
권한 추출은 저번시간에 했으니 이번 시간에는 URL정보와,권한정보를 map형태로 저장하는 코드를 구현해보자.
DB로부터 얻은 자원정보/권한 을 RequestMap을 빈으로 생성해서 URLFilterInvocationSecurityMetadataSource에게 전달
즉 DB로부터 얻은 데이터를 map형태로 만들어 주는 작업
DB에서 가져온 자원정보,권한정보 데이터를 map으로 형태로 가공 시켜주는 service 와 그 가져온 Map 을 저장할 공간을 만들어준다
실질적 역활을 담당하는 부분이다. service에서는 map으로 가공된 데이터를 resourceMap에 넣어준다.
싱글톤으로 단하나만 존재하게 만들것이며 오브젝트 타입은 LinkedHashMap이다.
레파지토리에서 데이터를 가져온다.
가져온 데이터를 반복문을 돌려 권한정보를 담는 List공간을 만든뒤 Resources 엔티티의 RoleSet(Many to Many) -> 즉 한개의 리소스에는 여러개의 role이 존재한다는 사실
한개의 Resources에 해당하는 여러개의 role을 반복문을 돌려 미리 생성해둔 List<.ConfigAttribute> 저장해준다.
(SecurityConfig 는 ConfigAttribute 인터페이스의 구현체)
Role(권한)을 저장한 List를 result에 key값(자원정보)와 함께 넣어 준다.