[ 설정파일 ]

jwt:
  valid-time: 3600000 # 1시간
  key: password

[ Provider ]

@Service
public class JwtProvider {

    @Value("${jwt.valid-time}")
    private int tokenValidTime;

    @Value("${jwt.key}")
    private String secretKey

    public String createToken(String userId) {
        Claims claims = Jwts.claims();
        claims.put("user", userId);
        claims.put("role", "USER");

        String token = Jwts.builder()
                .setClaims(claims)
                .setIssuedAt(now)
                .setExpiration(new Date(now.getTime() + tokenValidTime))
                .signWith(SignatureAlgorithm.HS256, secretKey)
                .compact();

        return token;
    }

    public boolean isValidToken(String token) {
        try {
            Jws<Claims> claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token);
            return !claims.getBody().getExpiration().before(new Date());
        } catch (Exception e) {
            return false;
        }
    }
}