Springboot jjwt封装使用
简单写法
java
public class JwtUtils {
/**
*生成jwtToken
*/
public static String getToken(Map<String,Object> map){
return Jwts.builder()
.addClaims(map)
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis()+60*60*24*1000))
.signWith(SignatureAlgorithm.HS256,"!@#asf124")
.compact();
}
/**
*解析jwt
*/
public static Claims deToken(String token){
try {
return Jwts.parser()
.setSigningKey("!@#asf124")
.parseClaimsJws(token)
.getBody();
}catch (Exception e){
return null;
}
}
}完整配置
java
public class JwtUtil {
//有效期
public static final Long JWT_TTL = 60*60*1000L;
//设置密钥
public static final String JWT_KEY="zheshiJWTdeKeynie";
public static String getUUID(){
String token = UUID.randomUUID().toString().replaceAll("-","");
return token;
}
/**
* 生成jwt
*/
public static String createJWT(String subject){
JwtBuilder builder =getJwtBuilder(subject,null,getUUID());
return builder.compact();
}
public static String createJWT(String subject,Long ttlMillis){
JwtBuilder builder =getJwtBuilder(subject,ttlMillis,getUUID());
return builder.compact();
}
/**
* 创建jwt
*/
private static JwtBuilder getJwtBuilder(String subject,Long ttlMillis,String uuid){
if (ttlMillis == null)
ttlMillis = JWT_TTL;
SecretKey secretKey = generalKey();
return Jwts.builder()
.setId(uuid)//唯一id
.setSubject(subject)//主题,可以是JSON
.setIssuer("sa")//签发者
.setIssuedAt(new Date())//签发时间
.setExpiration(new Date(System.currentTimeMillis()+ttlMillis))//过期时间
.signWith(SignatureAlgorithm.HS256,secretKey);//使用HS256对称加密算法签名,第二个参数为加密key
}
/**
* 生成加密后的密钥key
*/
public static SecretKey generalKey(){
byte[] encodedKey = Base64.getDecoder().decode(JWT_KEY);
SecretKey key = new SecretKeySpec(encodedKey,0, encodedKey.length, "AES");
return key;
}
/**
*解析jwt
*/
public static Claims parseJWT(String token) throws Exception{
SecretKey secretKey = generalKey();
return Jwts.parser()
.setSigningKey(secretKey)
.parseClaimsJws(token)
.getBody();
}
}