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

@Value is disallowed for this location

Na classe TokenService, recebo essa mensagem nas annotations @Value. O que fazer?

package com.curso.springboot.config.security;

import java.util.Date;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Service;

import com.curso.springboot.model.Usuario;

import io.jsonwebtoken.Jwts;

@Service
public class TokenService {

    public String gerarToken(Authentication authentication) {

        @Value("${projeto.jwt.expiration}")
        private String expiration;

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

        Usuario logado = (Usuario) authentication.getPrincipal();
        Date hoje = new Date();
        Date dataExpiracao = new Date(hoje.getTime() + expiration);

        return Jwts.builder()
                .setIssuer("Api do curso")
                .setSubject(logado.getId().toString())
                .setIssuedAt(hoje)
                .setExpiration(dataExpiracao)
                .signWith(io.jsonwebtoken.SignatureAlgorithm.HS256, secret)
                .compact();
    }
}
2 respostas
solução!

Opa Fabiano, tudo certo?

Então, a principio os atributos foram declarados no lugar errado, dentro de método os atributos pertencem apenas a este escopo, então não podemos definir modificadores de acesso e nem anotações, anotações podem ser definidas em atributos de classe, métodos e nas proprias classes.

Para seu código funcionar, deveria estar desta forma:

@Service
public class TokenService {

    @Value("${projeto.jwt.expiration}")
    private String expiration;

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

    public String gerarToken(Authentication authentication) {
        Usuario logado = (Usuario) authentication.getPrincipal();
        Date hoje = new Date();
        Date dataExpiracao = new Date(hoje.getTime() + expiration);

        return Jwts.builder()
                .setIssuer("Api do curso")
                .setSubject(logado.getId().toString())
                .setIssuedAt(hoje)
                .setExpiration(dataExpiracao)
                .signWith(io.jsonwebtoken.SignatureAlgorithm.HS256, secret)
                .compact();
    }
}

Espero que tenha ficado mais claro, caso ainda tenha duvida pode mandar :)

Jumentice minha. Obrigado!