Bootstrap

JWT 工具类解析

工具类

public class JwtUtil {
    //定义过期时间
    public static final long EXPIRE = 1000*60;
    //密匙
    @Value("${secret}")
    private static  String secret;							//对应jwt签名 

    /**
     * 生成头部信息  //对应jwt第一部分  头部信息
     * @return
     */
    private static Map<String, Object> createHead() {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("typ", "JWT");
        map.put("alg", "HS512");
        return map;
    }

    /**
     * 生成token
     * @param 
     * @return
     * @throws JsonProcessingException
     */
    public static String createToken(实体类) throws JsonProcessingException {
    /**以下对应jwt载荷
     * ss:发行人
     * exp:到期时间
     * sub:主题
     * aud:用户
     * nbf:在此之前不可用
     * iat:发布时间
     * jti:JWT ID用于标识该JWT
     * /
        String token = Jwts.builder().setHeader(createHead())  //添加头部信息
        		.setSubject()  //token得主题
                .claim("username",实体类数据) //自定义载荷
                .claim("password",实体类数据)
                .claim("driver",实体类数据)
                .setIssuedAt(new Date())  //签发token时候得时间
                .setExpiration(new Date(System.currentTimeMillis()+EXPIRE))  //过期时间
                .signWith(SignatureAlgorithm.HS256,"xxxxx").compact(); //添加密匙并加密 生成token
        return token;
    }

    /**
     * 解密token
     * @param token
     * @return
     */
    public static Claims checkJWT(String token ){
        try{
            final Claims claims =  Jwts.parser().setSigningKey("xxxxx").
                    parseClaimsJws(token).getBody();
            return  claims;
        }catch (Exception e){ }
        return null;

    }



}
;