У меня есть конечная точка REST, доступ к которой ограничен только пользователями ADMIN:
@GetMapping
@PreAuthorize("hasAuthority('ADMIN')")
fun getAll(): Flux<User> {
return Flux.fromIterable(userRepository.findAll())
}
Когда я пытаюсь получить доступ к этой конечной точке с пользователем, не являющимся пользователем ADMIN, я получаю 403 с ответом denied
(не JSON-ответ).
Как настроить ответ так, чтобы он все еще получал ответ 403, но с сообщением JSON что-то вроде
{
"error": "Access denied"
}
SecurityWebFilterChain
Я реализую:
return http.csrf().disable()
.formLogin().disable()
.httpBasic().disable()
.authenticationManager(authenticationManager)
.securityContextRepository(securityContextRepository)
.exceptionHandling().accessDeniedHandler { exchange, denied -> ???? }
.and()
.authorizeExchange()
.pathMatchers(HttpMethod.OPTIONS).permitAll()
.pathMatchers("/auth").permitAll()
.anyExchange().authenticated()
.and().csrf().disable()
.logout().disable()
.build()