1
resposta

Pegar as roles pelo JWT

Nessa função conseguimos pegar o username pelo JWT, teria como pegar as roles também ao invés de fazer uma consulta no banco (com loadUserByUsername)? Se sim seria uma boa prática?

fun getAuthentication(jwt: String?) : Authentication {
    val username = Jwts.parser().setSigningKey(secret.toByteArray()).parseClaimsJws(jwt).body.subject
    val user = usuarioService.loadUserByUsername(username)
    return UsernamePasswordAuthenticationToken(username, null, user.authorities)
}
1 resposta

Leandro, acredito que vc conseguiria pegar sim, porém o problema que no payload que vc pegaria as informações de roles, teriam outras informações também e vc teria que manipular a string para pegar só o que vc quer, o que acho que é menos vantajoso que pegar no banco, além de aumentar a chance de erros.

{
  "sub": "ana@email.com",
  "role": [
    {
      "authority": "LEITURA_ESCRITA"
    }
  ],
  "exp": 1652629615
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software