ADMIN 혹은 MANAGER 역할을 가진 사용자로 /admin 과 /manager 로 접근하려고 하는데, 403 에러가 발생
문제는 SpringSecurity가 hasRole에는 "ROLE_"이라는 prefix를 자동으로 붙여주기 때문이다.
반면 hasRole대신 hasAuthority를 사용하면 prefix를 붙여주지 않는다.
.requestMatchers("/manager").hasAnyRole("ADMIN", "MANAGER") 을
.requestMatchers("/manager/**").hasAnyAuthority("MANAGER", "ADMIN") 로 변경
* 해결한 코드
http
.csrf(AbstractHttpConfigurer::disable) // CSRF 보안 토큰 disable처리.
.authorizeHttpRequests(request -> request
.requestMatchers("/user/**").authenticated()
.requestMatchers("/manager/**").hasAnyAuthority("MANAGER", "ADMIN")
.requestMatchers("/admin/**").hasAuthority("ADMIN")
.anyRequest().permitAll()
)
.....
);
return http.build();