Como capiturar esse erro de senha ou login invalido, teria como mandar um exemplo:
Como capiturar esse erro de senha ou login invalido, teria como mandar um exemplo:
Oi!
Você deseja capturar em que sentido? Seria apenas para realizar um debug e identificar algum problema que não conseguiu resolver, ou seria para realizar um novo tratamento de erros, que será retornado na resposta da requisição?
Seria um tratamento de erro caso o ligin ou a senha seja digitado de forma incorreta
Na classe de tratamento de erros, precisa adicionar mais métodos:
@ExceptionHandler(BadCredentialsException.class)
public ResponseEntity tratarErroBadCredentials() {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Credenciais inválidas");
}
@ExceptionHandler(AuthenticationException.class)
public ResponseEntity tratarErroAuthentication() {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Falha na autenticação");
}
@ExceptionHandler(AccessDeniedException.class)
public ResponseEntity tratarErroAcessoNegado() {
return ResponseEntity.status(HttpStatus.FORBIDDEN).body("Acesso negado");
}
E na classe de configurações de segurança, precisa fazer um tratamento específico também:
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().authorizeHttpRequests()
.requestMatchers(HttpMethod.POST, "/login").permitAll()
.anyRequest().authenticated()
.and().exceptionHandling().authenticationEntryPoint(authenticationEntryPoint())
.and().addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
.build();
}
@Bean
public AuthenticationEntryPoint authenticationEntryPoint() {
return new UnauthorizedEntryPoint();
}
E criar a classe de tratamento de erro de autenticação:
public class UnauthorizedEntryPoint implements AuthenticationEntryPoint {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException ex) throws IOException, ServletException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Access Denied");
}
}