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 |