15섹션 프로그래밍 방식의 인가 구현 – DB 연동 / 여러개의 권한매핑
401
작성한 질문수 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
28
2
단원별 소스코드
0
60
2
CustomAuthenticationProvider 추가 관련 문의
0
69
2
AOP 의존성 명칭 변경
0
65
1
빈 1개 등록 시 다른 해결 방법
0
65
1
@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?
0
85
2
OIDC의 id token에 담긴 데이터에 대해
0
74
1
loginPage("/loginPage") 질문드립니다.
0
69
1
@EnableWebSecurity
0
147
1
트랜잭션과 롤백
0
99
1
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제
0
89
2
AuthenticationManager 사용 방법
0
148
2
HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문
0
104
2
spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??
0
190
1
init(B Builder), configure(B builder) 에 대하여 질문 드립니다.
0
106
2
메타 주석 질문
0
68
1
동시세션제어 기능에서 로그아웃하기
0
147
3
로그인 후, redirect 에서 error
0
138
3
Session 생성 타이밍에 대한 질문
0
84
2
강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.
0
133
2
customAuthentication 관련
0
127
2
authenticationManagerBuilder 주입받은거 vs 만든 거
0
110
1
UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?
0
101
1
9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.
0
159
2





