Como capiturar esse erro de senha ou login invalido, teria como mandar um exemplo:
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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");
}
}