Boa noite, pessoal
estou desenvolvendo uma api com Spring e JWT, preciso fazer uma inserção na FK do ID do usuário que está logado no momento. Consegui captar o ID dele pelo corpo do JWT, porém não sei como utilizá-lo para a inserção. Estou usando JPA.
Minha Controller está assim:
@PostMapping("/adicionarNota")
public Nota addNota(@RequestBody Nota nota) {
return service.saveNota(nota);
}
Lembrando que meu JWT já está com o campo ID q preciso, minha dúvida é só como acessá-lo para criar a regra na hora do insert mesmo. Muito obrigado pela atenção.
Tu tem que usar a lib jwt que está sendo usada no projeto. Para um projeto que esteja usando o io.jsonwebtoken / jjwt-root, por exemplo, seria algo assim:
Claims claims = Jwts.parser()
.setSigningKey(SECRET)
.parseClaimsJws(token)
.getBody();
A partir dos claims
obtidos, vc pega o que possui o ID do usuário (que deve ser o sub).
Lembrando que essas libs podem possuir outras formas de recuperar também, como algum método que já recupera o claim pelo nome dele, por exemplo (basta dá uma lida na documentação para ver as possibilidades).
1 curtida
Opa, boa noite amigo!
No meu projeto já consegui puxar o id que eu preciso pelas claims, mas ficou em “jti” (creio que seja pela forma que inseri, mas é só chamar outro metodo para mudá-lo, como o sub ali).
Minha dúvida é, tendo este id no corpo do meu ID, como eu posso utilizar isso em métodos de outras classes. Por exemplo, no meu save do JPA quero que cadastre aquela nota, mas q seja na foreign key daquele usuário logado, cujo id já tá no corpo do JWT.
Não sei se consegui ser claro, de qualquer forma, agradeço a atenção.
Imagino que vc tenha uma relacionamento entre a Nota e o Usuario, certo? Com isso, vc tem que recuperar o usuário usando o ID obtido do token, e fazer o insert da nota usando esse usuário. Mas vai depender de como a Nota está mapeada (e também, como, realmente, está o relacionamento do usuário com a nota).