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

String expiration

Boa noite professor. Estou dando continuidade ao curso. Estou com problemas no String expiration;

minha classe TokenService:

//injetando as dependencia do application properties
    @Value("${forum.jwt.expiration}")
    private String expiration;

    @Value("${forum.jwt.secret}")
    private String secret;

    public String gerarToken(Authentication authentication) {

        //pega o usuario logado
        Usuario usuarioLogado = (Usuario) authentication.getPrincipal();

        Date dataAtual = new Date();
        Date dataExpiracao = new Date(dataAtual.getTime() + Long.parseLong(expiration));

        return Jwts.builder()
                //quem gera o token
                .setIssuer("API do forum da Alura")
                //quem é o usuario autenticado
                .setSubject(usuarioLogado.getId().toString())
                //quando o token foi gerado
                .setIssuedAt(dataAtual)
                //data de expiração
                .setExpiration(dataExpiracao)
                //token cripritografado
                .signWith(SignatureAlgorithm.HS256, secret)
                .compact();

    }
}

Utilizo application.yml - (por opção)

  # jwt
  forum:
      jwt:
      secret: SqkW"pzLpD4KGg_Q3*5E(KcDH)*@g"r~C~dA!^Y,C+:m[^4,EcN%nVAE@(<UaAJ)8`Z4$XJLu{vxM+S;+GP3Akp'!\*nX7!B2nyJ
      expiration: 86400000

Erro:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'forum.jwt.expiration' in value "${forum.jwt.expiration}"

Dei uma olhada, não consegui achar o erro. Vou tentar mais amanha Se puder ajudar, ficarei grato rsrs Abraços

3 respostas
solução!

Oi Daniel,

Será que é porque não está identada a propriedade secret ?

No código que você postou ela está no mesmo nível de identação da propriedade jwt, então ao injetar seria: @Value("${forum.expiration}")

Ou talvez seja porque na senha da propriedade secret esteja dando algum problema por conta dos caracteres especiais e ele não está reconhecendo a última propriedade.

Nesse caso tenta inverter então a declaração, deixando a senha por último:

forum:
    jwt:
        expiration: 86400000
        secret: SqkW"pzLpD4KGg_Q3*5E(KcDH)*@g"r~C~dA!^Y,C+:m[^4,EcN%nVAE@(<UaAJ)8`Z4$XJLu{vxM+S;+GP3Akp'!\*nX7!B2nyJ

Veja se resolve.

Bom dia professor Perfeito Hoje a noite vou fazer esses testes Obrigado

Professor acredito que era a edentação mesmo no application.properties. esse forum, estava alinhado como se fosse uma propriedade do Spring e não é rsrs

Certinho. Foi simples, bati olho e vi, acho que ontem eu tava erá já cansado mesmo. Valeu professor