Skip to content

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();

    }

}