15섹션 프로그래밍 방식의 인가 구현 – DB 연동 / 여러개의 권한매핑
406
작성한 질문수 1
섹션 15 (프로그래밍 방식의 인가 구현 – DB 연동) 강의에서 6:10 에 작성하신 코드
위 코드에 대해서 질문 드립니다.
저는 PageDto라는 객체를 만들고
해당 객체는 String url, Set<PageRole>으로 구성되어있고
위와 같이 코드를 작성하였습니다.
데이터를 Map에 넣고 콘솔창에 출력해보았을 때
url값이 중복이라(맵의 key값) 마지막 권한만이 Map<String, String>객체에 들어가는데 하나의 url에 여러 개의 권한을 매핑 할 때 해당 구조로 작성 하는 것이 맞는지 질문 드립니다.
만약에 Map<String, Set>구조이면 이후 커스텀 매니저에서 setMapping()의 로직이 달라지는지도 궁금합니다.
답변 1
1
아 네
Map 의 특성상 키 중복이 일어날 수 있습니다.
일단 아래와 같이 할 수 있습니다. 물론 이 방식 외에 다른 방식으로도 가능합니다.
PersistentUrlRoleMapper.java
@Override
public Map<String, String> getUrlRoleMappings() {
List<Resources> resourcesList = resourcesRepository.findAllResources();
resourcesList.forEach(re -> {
re.getRoleSet().forEach(role -> { // 키를 중복되지 않도록 설정
urlRoleMappings.put(re.getId() + "|" + re.getResourceName(), role.getRoleName());
});
});
return urlRoleMappings;
}CustomDynamicAuthorizationManager.java
@PostConstruct
public void mapping() {
DynamicAuthorizationService dynamicAuthorizationService =
new DynamicAuthorizationService(new PersistentUrlRoleMapper(resourcesRepository));
mappings = dynamicAuthorizationService.getUrlRoleMappings()
.entrySet().stream()
.map(entry -> {
// 키 값으로부터 url 값만 추출해서 설정
String url = entry.getKey().substring(entry.getKey().indexOf("|")+1);
RequestMatcherEntry<AuthorizationManager<RequestAuthorizationContext>> requestMatcherEntry
= new RequestMatcherEntry<>(
new MvcRequestMatcher(handlerMappingIntrospector, url),
customAuthorizationManager(entry.getValue()));
return requestMatcherEntry;
})
.collect(Collectors.toList());
}
1
빠른 답변 감사합니다.
키값에 변형을 주는것이 아닌 value 값을 각각의 권한이 아닌 url에 매핑되어있는 권한의 Set구조를 넣어
return을 Map<String,Set>으로 하여 매니저 단에서 forEach를 돌려서 해보겠습니다.
감사합니다~!!
로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.
0
53
2
단원별 소스코드
0
77
2
CustomAuthenticationProvider 추가 관련 문의
0
91
2
AOP 의존성 명칭 변경
0
92
1
빈 1개 등록 시 다른 해결 방법
0
78
1
@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?
0
100
2
OIDC의 id token에 담긴 데이터에 대해
0
86
1
loginPage("/loginPage") 질문드립니다.
0
72
1
@EnableWebSecurity
0
152
1
트랜잭션과 롤백
0
110
1
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제
0
100
2
AuthenticationManager 사용 방법
0
159
2
HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문
0
111
2
spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??
0
197
1
init(B Builder), configure(B builder) 에 대하여 질문 드립니다.
0
113
2
메타 주석 질문
0
72
1
동시세션제어 기능에서 로그아웃하기
0
158
3
로그인 후, redirect 에서 error
0
146
3
Session 생성 타이밍에 대한 질문
0
90
2
강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.
0
139
2
customAuthentication 관련
0
132
2
authenticationManagerBuilder 주입받은거 vs 만든 거
0
115
1
UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?
0
103
1
9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.
0
167
2





