Eu queria na hora de fazer a autenticação que além do token e tipo de token me retornasse o nome do usuário e perfil(no meu caso se chama nível)
Na AutenticacaoController fiz o seguinte: (Que funciona na hora do login)
Long nivelID = (long) 0;
String nome = null;
@PostMapping
public ResponseEntity<TokenDto> autenticar(@RequestBody @Valid LoginForm form) {
UsernamePasswordAuthenticationToken dadosLogin = form.convert();
try {
Authentication authentication = authManager.authenticate(dadosLogin);
String token = tokenService.gerarToken(authentication);
buscaUsuario(dadosLogin.getPrincipal().toString());
return ResponseEntity.ok(new TokenDto(token, "Bearer", nome, nivelID ));
} catch (AuthenticationException e) {
System.out.println("Erro AuthenticationException - classe AutenticacaoController");
return ResponseEntity.badRequest().build();
}
}
@GetMapping
public void buscaUsuario(String email) {
List<LoginCustom2> result = lRepository.findByEmail(email);
for (LoginCustom2 l : result) {
nome = l.getNome();
nivelID = l.getNivel().getId();
}
}
Mas começou a da erro nas outras requisições, porque toda requisição que faço passa por ali
Erro:
java.lang.NumberFormatException: For input string: "email@email"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) ~[na:na]
at java.base/java.lang.Long.parseLong(Long.java:711) ~[na:na]
at java.base/java.lang.Long.parseLong(Long.java:836) ~[na:na]
at br.com.example.config.security.TokenService.getIdUser(TokenService.java:50) ~[classes/:na]
at br.com.example.config.security.AutenticacaoViaTokenFilter.autenticarUsuario(AutenticacaoViaTokenFilter.java:50) ~[classes/:na]
at br.com.example.config.security.AutenticacaoViaTokenFilter.doFilterInternal(AutenticacaoViaTokenFilter.java:42) ~[classes/:na]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.12.jar:5.3.12]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.5.3.jar:5.5.3]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.5.3.jar:5.5.3]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.5.3.jar:5.5.3]
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.12.jar:5.3.12]
Tem algum jeito melhor que posso fazer isso??