inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 시큐리티 완전 정복 [6.x 개정판]

계층적 권한 적용하기 - RoleHierarchy

setHierarchy deprecated

203

chaelynjang

작성한 질문수 24

0

안녕하세요 강사님 좋은 강의 감사드립니다.

처음부터 지금까지 모든 강의 내용을 직접 코딩을 따라 하며 실습하고 있었는데 해당 영상에서 질문할 것이 있습니다.

RoleHierarchyImpl을 빈 등록할 때 setHierarchy는 deprecated 되어서 fromHierarchy로 했더니 사진의 에러가 발생합니다.

두 메소드의 코드가 다르기 때문에 이런 에러가 발생한다고 추측되는데 deprecated된 setHierarchy를 사용하는 대신 다른 방안이 있을지 궁금해서 여쭤봅니다.

 

사실 계층적 권한 관련된 내용을 처음 설명해주시는 관련 영상(섹션 9의 마지막 영상)에서는 setHierarchy 대신 fromHierarchy를 사용했어도 잘 동작했었기에 더 궁금합니다.(그때는 물론 role을 db로 관리하지 않는 간단한 예제였습니다)

 

확인해주시고 코멘트 달아주시면 많은 도움이 될 것 같습니다. 감사합니다.

image.png
@Configuration
public class AuthConfig {
    @Bean
    public PasswordEncoder passwordEncoder() {
        return PasswordEncoderFactories.createDelegatingPasswordEncoder();
    }

    // 커스텀 계층 권한 적용
    @Bean
    public RoleHierarchyImpl roleHierarchy(RoleHierarchyService roleHierarchyService) {
        String allHierarchy = roleHierarchyService.findAllHierarchy();
        RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
        roleHierarchy.fromHierarchy(allHierarchy);
        //roleHierarchy.setHierarchy(allHierarchy);
        return roleHierarchy;
    }
}

spring spring-boot spring-security security web-security

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

chaelynjang님께서 질문하신 계층적 권한 설정에서 RoleHierarchyImpl.setHierarchy 메소드의 deprecated 이슈와 관련하여 답변드리겠습니다.

먼저, 질문해주신 코드와 에러를 보면, RoleHierarchyImpl 사용 시 setHierarchy 대신 fromHierarchy 메소드를 사용한 것과 관련된 문제로 보입니다.

fromHierarchy 메소드가 setHierarchy 메소드의 대안으로 제공됐으나, 정확한 사용법이나 역할이 다를 수 있습니다. 따라서 이로 인해 NullPointerException 등이 발생할 수 있습니다.

해결 방안:

1. fromHierarchy 메소드 사용 시 문제 해결:

만약 fromHierarchy 메소드를 사용하고 싶으시다면, 해당 메소드가 기대하는 포맷 또는 입력값을 정확하게 제공해야 합니다. RoleHierarchyImpl 문서를 참조하여 fromHierarchy 메소드의 사용 예제를 확인하는 것이 좋습니다.

@Configuration
public class AuthConfig {
    @Bean
    public PasswordEncoder passwordEncoder() {
        return PasswordEncoderFactories.createDelegatingPasswordEncoder();
    }

    @Bean
    public RoleHierarchyImpl roleHierarchy(RoleHierarchyService roleHierarchyService) {
        String allHierarchy = roleHierarchyService.findAllHierarchy();
        RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
        roleHierarchy.fromHierarchy(allHierarchy);  // 메소드 사용 확인 및 필요 시 포맷 검증
        return roleHierarchy;
    }
}

2. roleHierarchy.setHierarchy로 대체:

만약 fromHierarchy 메소드가 잘 작동하지 않는 경우, 기존의 setHierarchy 메소드를 사용하되 deprecated 경고를 무시하고 사용하실 수 있습니다. 추후 메소드가 제거되면 다른 대안을 찾아볼 수 있습니다.

@Configuration
public class AuthConfig {
    @Bean
    public PasswordEncoder passwordEncoder() {
        return PasswordEncoderFactories.createDelegatingPasswordEncoder();
    }

    @Bean
    public RoleHierarchyImpl roleHierarchy(RoleHierarchyService roleHierarchyService) {
        String allHierarchy = roleHierarchyService.findAllHierarchy();
        RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
        roleHierarchy.setHierarchy(allHierarchy);  // deprecated 경고 무시하고 사용
        return roleHierarchy;
    }
}

위 방식 중 하나를 적용해보고, 여전히 문제가 발생한다면 아래와 같은 유사한 질문에 대한 답변이 도움이 될 수 있습니다.

관련 질문 URL:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.

0

35

2

단원별 소스코드

0

64

2

CustomAuthenticationProvider 추가 관련 문의

0

78

2

AOP 의존성 명칭 변경

0

76

1

빈 1개 등록 시 다른 해결 방법

0

70

1

@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?

0

87

2

OIDC의 id token에 담긴 데이터에 대해

0

78

1

loginPage("/loginPage") 질문드립니다.

0

69

1

@EnableWebSecurity

0

148

1

트랜잭션과 롤백

0

99

1

68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제

0

91

2

AuthenticationManager 사용 방법

0

153

2

HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문

0

108

2

spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??

0

192

1

init(B Builder), configure(B builder) 에 대하여 질문 드립니다.

0

109

2

메타 주석 질문

0

69

1

동시세션제어 기능에서 로그아웃하기

0

150

3

로그인 후, redirect 에서 error

0

140

3

Session 생성 타이밍에 대한 질문

0

86

2

강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.

0

135

2

customAuthentication 관련

0

132

2

authenticationManagerBuilder 주입받은거 vs 만든 거

0

114

1

UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?

0

101

1

9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.

0

162

2