1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import org.springframework.stereotype.Service;import javax.crypto.spec.SecretKeySpec;import java.security.Key;import java.util.Base64;import java.util.UUID;/** * Create by liping on 2018/9/25 */@Servicepublic class JWTService { private static final String encodekeys = "liping"; private static SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS512; private static Key key;// @Value("${com.idoipo.jwt.encodedKey}")// private String encodedKey; /** * 初始化操作 @PostConstruct初始化完成后执行 */// @PostConstruct// public void init() {// signatureAlgorithm = SignatureAlgorithm.HS512;// key = deserializeKey(encodedKey);// } /** * 生成加密解密key * @return */ public static Key deserializeKey() { byte[] decodedKey = Base64.getDecoder().decode(encodekeys); Key key = new SecretKeySpec(decodedKey, JWTService.signatureAlgorithm.getJcaName()); return key; } /** * 创建token 参数应该为自定义模型去传,用来设置token所携带字段 * @return */ public static String createToken(){ key = deserializeKey(); String token = Jwts.builder() .setSubject(UUID.randomUUID().toString()) .claim("userName", "liping") .setIssuer("lp") .setAudience("xixi") .signWith(signatureAlgorithm, key).compact(); return token; } public static String parseToken(String token){ key = deserializeKey(); Claims claims = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody(); return claims.get("userName").toString(); } public static void main(String[] args) { String token = JWTService.createToken(); System.out.println(token); String userName = JWTService.parseToken(token); System.out.println(userName); } }