작성
·
151
·
수정됨
0
안녕하세요 강사님,
강의를 수강중인 수강생입니다.
궁금한 사항이 있어 질문드립니다.
PersistentUrlRoleMapper의 getUrlRoleMapping를 확인해보면 결국 urlRoleMappings 변수의 key value부분이
SecurityFilterChain의 requestMatchers("/admin/**").hasAuthority("ROLE_ADMIN")이 되는것 같습니다.
예를들어 컨트롤러 쪽 api 호출시
/admin/select 는 ROLE_MANAGER, ROLE_ADMIN 접근 가능하며
/admin/insert ROLE_ADMIN만 호출을 허락하려고하면
JPA나 쿼리를 수정해서 urlRoleMappings 에 매핑하면 될지 궁금하여 질문드립니다.
현재 업무중의 테이블이 Role 과 Menu가 있고,
Role과 Function이라는 테이블이 있어서,
Menu접근에 권한과 Menu하위에 기능별로 다르게 권한을 동적으로 주려고하다보니 해당부분을 수정하면 될것 같아서 질문을 드립니다.
public class PersistentUrlRoleMapper implements UrlRoleMapper{
public PersistentUrlRoleMapper(ResourcesRepository resourcesRepository) {
this.resourcesRepository = resourcesRepository;
}
@Override
public Map<String, String> getUrlRoleMappings() {
urlRoleMappings.clear();
List<Resources> resourcesList = resourcesRepository.findAllResources();
resourcesList.forEach(re -> {
re.getRoleSet().forEach(role -> {
urlRoleMappings.put(re.getResourceName(), role.getRoleName());
});
});
return urlRoleMappings;
}
}
답변 1
0
강의에서 설명하고 있는 내용을 참고로 하면 다른 로직을 구성하는데 도움이 될 수 있습니다.
질문하신 부분에 대해서는 DB 설계나 전체 구조에 대한 이해를 바탕으로 해야 하기 때문에 여기서 답변드리기가 어려운 점이 있습니다.
PersistentUrlRoleMapper 와 ResourcesRepository 에 를 중심으로 변경이 되어야 할 것 같습니다.