Olá poderiam me ajudar ? Eu ja finalizei todas as aulas do curso, mas quando vou efetuar login após as mudanças da aula 5, ao executar o codigo está retornando uma exception, eu até printei os dados enviados para ter certeza que esta tudo correto. Já realizei uma comparacao lado a lado com o projeto final do curso, mas não consegui encontrar a causa do problema.
Exception:
voll_med | Login:ana.souza@voll.med
voll_med | Password:$2a$10$Y50UaMFOxteibQEYLrwuHeehHYfcoafCopUazP12.rqB41bsolF5.
voll_med | UsernamePasswordAuthenticationToken [Principal=ana.souza@voll.med, Credentials=[PROTECTED], Authenticated=false, Details=null, Granted Authorities=[]]
voll_med | Hibernate:
voll_med | select
voll_med | u1_0.id,
voll_med | u1_0.login,
voll_med | u1_0.password
voll_med | from
voll_med | USERS u1_0
voll_med | where
voll_med | u1_0.login=?
voll_med | org.springframework.security.authentication.BadCredentialsException: Bad credentials
voll_med | at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:89)
voll_med | at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:147)
voll_med | at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:182)
voll_med | at com.alura.voll_med.controller.AuthenticationController.makeLogin(AuthenticationController.java:41)
voll_med | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
voll_med | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
voll_med | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
voll_med | at java.base/java.lang.reflect.Method.invoke(Method.java:568)
Controller: O erro esta acontecendo nessa linha: var authentication = manager.authenticate(authenticationToken);
@RestController
@RequestMapping("/login")
public class AuthenticationController {
@Autowired
private AuthenticationManager manager;
@Autowired
private TokenManagerService tokenService;
@PostMapping
public ResponseEntity makeLogin(@RequestBody @Valid AuthenticationDataDTO authDTO){
try {
System.out.println("Login:"+authDTO.login());
System.out.println("Password:"+authDTO.senha());
var authenticationToken = new UsernamePasswordAuthenticationToken(authDTO.login(), authDTO.senha());
var authentication = manager.authenticate(authenticationToken);
System.out.println("Authentication Object:"+authentication);
var tokenJWT = tokenService.generateToken((User)authentication.getPrincipal());
return ResponseEntity.ok(new AuthenticationTokenDTO(tokenJWT));
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.badRequest().body(e.getMessage());
}
}
}
Requisicao no Postman:
Banco de dados:
Como da para perceber o usuario e senha enviados na requisicao sao os mesmos armazenados no banco de dados.