1
resposta

Como pegar as roles pelo JWT

Na aula o professor obtém as Roles do Banco de Dados, depois de obter o username do Token. Mas também é possível obtê-las diretamente do token, sem precisar ler novamente do BD, uma vez que ele contém as roles e além disso é assinado (ou seja, temos uma garantia de que o usuário não acrescentou roles indevidamente):

    fun getAuthentication(jwt: String): Authentication {
        val body = Jwts.parser().setSigningKey(secret.toByteArray()).parseClaimsJws(jwt).body
        val username = body.subject

        val authorities: Collection<GrantedAuthority> = body.get("role", ArrayList::class.java)
            .map { it as LinkedHashMap<*, *> }
            .map { Role((it["id"] as Int?)?.toLong(), it["nome"] as String) }

        return UsernamePasswordAuthenticationToken(
            username, null,
            authorities
        )
    }
1 resposta

Leonardo, bom dia!! Obrigado pela dica, amigo =)