Bom dia, Cauã, tudo certo
Quando trabalhamos com JWT, é comum incluir informações no token que possam ser úteis para identificar o usuário ou para aplicar regras de autorização. Incluir o ID do usuário no token é uma prática comum, pois permite que você identifique o usuário de forma única e associe dados específicos, como o carrinho de compras, a esse usuário.
Para incluir o ID do usuário no token, você pode adicionar esse dado como uma "claim" no JWT. Aqui está um exemplo de como você poderia fazer isso:
Criar o Token com o ID do Usuário:
Quando você gera o token, adicione o ID do usuário como uma claim. Por exemplo:
String token = Jwts.builder()
.setSubject(userDetails.getUsername())
.claim("userId", userId) // Aqui você adiciona o ID do usuário
.signWith(SignatureAlgorithm.HS512, secretKey)
.compact();
Recuperar o ID do Usuário do Token:
Quando você precisar recuperar o ID do usuário do token, você pode fazer isso ao analisar o token:
Claims claims = Jwts.parser()
.setSigningKey(secretKey)
.parseClaimsJws(token)
.getBody();
String userId = claims.get("userId", String.class); // Aqui você recupera o ID do usuário
Quanto à questão do UserDetails
, você pode estender a classe UserDetails
ou criar uma implementação personalizada que inclua o método getId()
para acessar o ID do usuário.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.