Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Classe JWTUtil atualizada com a nova versão

Olá pessoal, fiz as seguintes alterações para funcionar na nova versão do JWT:

@Component
class JWTUtil(
    private val usuarioService: UsuarioService
) {

    @Value("\${jwt.secret}")
    private var secret: String = "2a12Dpr9yBjZksrrC34hnQEG1uDyF5HKckz3Cob4j5md1Jl3jXPF1ejzi"

    private val expiration: Long = 60000

    private val key = Keys.hmacShaKeyFor(secret.toByteArray(StandardCharsets.UTF_8))

    fun generateToken(username: String, authorities: MutableCollection<out GrantedAuthority>): String {
        return Jwts
            .builder()
            .subject(username)
            .claim("role", authorities)
            .expiration(Date(System.currentTimeMillis() + expiration))
            .signWith(key)
            .compact()
    }

    fun isValid(jwt: String?): Boolean {
        return try {
            Jwts.parser()
                .verifyWith(key)
                .build()
                .parseSignedClaims(jwt)
            true
        } catch (e: IllegalArgumentException) {
            false
        }
    }

    fun getAuthentication(jwt: String?): UsernamePasswordAuthenticationToken {
        val username = Jwts.parser()
            .verifyWith(key)
            .build()
            .parseSignedClaims(jwt)
            .payload
            .subject
        val user = usuarioService.loadUserByUsername(username.toString())
        return UsernamePasswordAuthenticationToken(username, null, user.authorities)
    }
}

Aqui funcionou perfeitamente.

4 respostas
solução!

Oi Matheus, como vai?

Que bom que você conseguiu fazer as alterações para que sua classe JWTUtil funcione com a nova versão do JWT!

Continue com o bom trabalho e caso precise de ajuda não exite em pedir.

Bons estudos!

olá consegue me da um heelppppppp de como ficou o projeto final na nova versão estou estudando mais não conseguir seguir em frente pois muda uma classe afeta as outra novas que foram criadas .

Então, eu fiz um projeto público com tudo que eu aprendi em kotlin aqui na Alura, porém eu mudei muuuuuita coisa porque fui colocando algumas regras de negócio que eu queria neste projeto em especíco, mas você pode dar um clone e dar uma vasculhada.

https://github.com/MatheusMFranco/neoforum

Se te ajudar, dá uma estrelinha no repositório. rs

vlw jovem ... estrela garantida rs