ao printar o token ele apenas faz um select mas nao me mostra o token, nao sei se está funcionando, ele procura o usuario mas nao printa o token
Hibernate: select usuario0_.id as id1_4_, usuario0_.email as email2_4_, usuario0_.nome as nome3_4_, usuario0_.senha as senha4_4_ from usuario usuario0_ where usuario0_.email=? Hibernate: select perfis0_.usuario_id as usuario_1_5_0_, perfis0_.perfis_id as perfis_i2_5_0_, perfil1_.id as id1_1_1_, perfil1_.nome as nome2_1_1_ from usuario_perfis perfis0_ inner join perfil perfil1_ on perfis0_.perfis_id=perfil1_.id where perfis0_.usuario_id=?
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private TokenService tokenService;
@PostMapping
public ResponseEntity<?> autenticar(@RequestBody @Valid LoginForm form) {
UsernamePasswordAuthenticationToken dadosLogin = form.converter();
try{
Authentication authentication = authenticationManager.authenticate(dadosLogin); //ve as autentificação
String token = tokenService.gerarToken(authentication);
System.out.println(token);
return ResponseEntity.ok().build();
} catch (AuthenticationException e) {
ResponseEntity.badRequest().build();
}
return ResponseEntity.ok().build();
}
}
@Service public class TokenService {
@Value("${forum.jwt.expiration}") //recebe valores do aplicaction properties e injeta
private String expiration;
@Value("${forum.jwt.secret}")
private String secret;
public String gerarToken(Authentication authentication) {
Usuario logado = (Usuario) authentication.getPrincipal();//recupera o usuario logado
Date hoje = new Date();
Date dataExpiracao = new Date(hoje.getTime() + Long.parseLong(expiration));// apartir da dataExpiracao gera o tempo da geracao do token
return Jwts.builder()
.setIssuer("FOrum alura") //qual aplicação está gerando o token
.setSubject(logado.getId().toString()) //dono de quem pertence a sessao
.setIssuedAt(hoje) //data quando foi gerado
.setExpiration(dataExpiracao) //tempo de expiração
.signWith(SignatureAlgorithm.HS256,secret) // HS256,gera o algoritmo de cripografia cripocrafia do token obs "buscar um programa que faça uma senha aleatoria grande de numeros"
.compact(); //compacta tudo,
}