Spring Securiy ROLE_ 에러

2025. 1. 7. 16:48기타

아래처럼 enum을 아래처럼 구현하고, SecurityFilterChain을 구성했는데 역할을 검증하는 부분해서 403 에러가 발생했습니다.

public enum Role {
    ADMIN,
    USER
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .csrf(csrf -> csrf.disable())
        .formLogin(form -> form.disable())
        .authorizeHttpRequests(auth -> auth
            .requestMatchers("/users").hasRole("USER")
            .requestMatchers("/meetings/**", "/my/**").hasAnyRole("ADMIN", "USER")
            .anyRequest().permitAll()
        );

    return http.build();
}

 

 

그래서 SecurityConfig에서 역할을 검증할 때 사용하는 메서드인 hasAnyRole 메서드를 확인해 보았고 그 내용은 아래와 같습니다.

 

private String rolePrefix = "ROLE_";

public AuthorizationManagerRequestMatcherRegistry hasAnyRole(String... roles) {
    return access(withRoleHierarchy(
          AuthorityAuthorizationManager.hasAnyRole(AuthorizeHttpRequestsConfigurer.this.rolePrefix, roles)));
}

 

prefix로 ROLE_을 붙여주고있는데, 저는 그냥 USER로 해놨으니까 검증이 제대로 안되어서 에러가 발생했습니다.

enum을 아래처럼 바꿔서 해결했습니다.

public enum Role {
    ROLE_ADMIN,
    ROLE_USER
}

 

'기타' 카테고리의 다른 글

컴퓨터가 문자를 인식하는 방법 (ASCII, 유니코드)  (0) 2024.08.24
SEO, 검색 엔진 최적화  (0) 2024.06.20
해시  (0) 2024.04.11