Quero capturar a exceção de acesso negado do Spring Boot quando, por exemplo, um usuário estiver prestes a acessar uma página de um administrador.
Eu tenho esse manipulador de exceção no meu GlobalExceptionHandler (@ControllerAdvice)
@ExceptionHandler(AccessDeniedException.class)
@ResponseStatus(HttpStatus.FORBIDDEN)
public String handleAccessDenied(AccessDeniedException e, Model model) {
model.addAttribute("errorMessage", e.getMessage());
return "error";
}
Tentei usar um CustomAccessDeniedHandler:
@Component
public class CustomAccessDeniedHandler implements AccessDeniedHandler {
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
throw accessDeniedException;
}
}
e no meu SecurityConfig adicionei isso ao meu filterChain:
.exceptionHandling(eh -> eh.accessDeniedHandler(customAccessDeniedHandler))
E agora recebo um acesso negado no meu terminal: org.springframework.security.authorization.AuthorizationDeniedException: Acesso negado
Quero capturar isso com meu GlobalExceptionHandler (tentei usar AuthorizationDeniedException em ExceptionHandler)
Nota: Eu não uso JWT
O que estou perdendo?