JWTProvider.java
package auth.security.jwt;
import auth.constant.InfoConstant;
import auth.entity.User;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Base64;
import java.util.Date;
/**
* @author fdse
*/
@Component
public class JWTProvider {
private String secretKey = "secret";
// Changed from 3600000 (1 hour) to 2592000000 (30 days) for long-running experiments
private long validityInMilliseconds = 2592000000L;
@PostConstruct
protected void init() {
secretKey = Base64.getEncoder().encodeToString(secretKey.getBytes());
}
public String createToken(User user) {
Claims claims = Jwts.claims().setSubject(user.getUsername());
claims.put(InfoConstant.ROLES, user.getRoles());
claims.put(InfoConstant.ID, user.getUserId());
Date now = new Date();
Date validate = new Date(now.getTime() + validityInMilliseconds);
return Jwts.builder()
.setClaims(claims)
.setIssuedAt(now)
.setExpiration(validate)
.signWith(SignatureAlgorithm.HS256, secretKey)
.compact();
}
}