Json Web Token 的Java使用 (JJWT)

JWT是什么我就不做介绍了,在这只说一下JWT的开源的第三方JJWT的初步使用
话不多说,上代码
JwtUtil.class

public class JwtUtil 
{
    private String jianshu;
    
    /**
     * 由字符串生成加密key
     * @return
     */
    public SecretKey generalKey(){
        String stringKey = jianshu+Constant.JWT_SECRET;
        byte[] encodedKey = Base64.decodeBase64(stringKey);
        SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
        return key;
    }

    /**
     * 创建jwt
     * @param id
     * @param subject
     * @param ttlMillis
     * @return
     * @throws Exception
     */
    public String createJWT(String id, String subject, long ttlMillis) throws Exception {
        
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
        long nowMillis = System.currentTimeMillis();
        Date now = new Date(nowMillis);
        SecretKey key = generalKey();
        JwtBuilder builder = Jwts.builder()
            .setId(id)
            .setIssuedAt(now)
            .setSubject(subject)
            .signWith(signatureAlgorithm, key);
        if (ttlMillis >= 0) {
            long expMillis = nowMillis + ttlMillis;
            Date exp = new Date(expMillis);
            builder.setExpiration(exp);
        }
        return builder.compact();
    }
    
    /**
     * 解密jwt
     * @param jwt
     * @return
     * @throws Exception
     */
    public Claims parseJWT(String jwt) throws Exception{
        SecretKey key = generalKey();
        Claims claims = Jwts.parser()         
           .setSigningKey(key)
           .parseClaimsJws(jwt).getBody();
        return claims;
    }
    
    /**
     * 生成subject信息
     * @param user
     * @return
     */
    public static String generalSubject(t_user user){
        JSONObject jo = new JSONObject();
        jo.put("userId", user.getId());
        jo.put("mobile", user.getMobile());
        return jo.toJSONString();
    }
    
}

Constant.class

public class Constant 
{
    /**
     * jwt
     * 
     */
    public static final String JWT_ID = "jwt";
    public static final String JWT_SECRET = "hong1mu2zhi3ruan4jian5";
    public static final int JWT_TTL = 60*60*1000;  //millisecond
    public static final int JWT_REFRESH_INTERVAL = 55*60*1000;  //millisecond
    public static final int JWT_REFRESH_TTL = 12*60*60*1000;  //millisecond
}

在这只是JJWT的最基本的实现,后续会继续完善.

点这里:JJWT的github地址
JJWT的jar包:jar包地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,802评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,032评论 19 139
  • 昨天去上选修课,老师说她明天都会写日记,日记是一个很好的载体。所以尽管我文笔不好,我也想写些什么。 昨天的天气很好...
    岳乔子阅读 266评论 0 0
  • 林慧慧和清辉是一对离异夫妻,婚前父母介绍相亲结婚,婚后三年半因为感情基础薄弱,男方起诉离婚。孩子一岁2个月,夫妻分...
    努力红阅读 1,270评论 0 1
  • 1:目标不明是关键问题: 长期目标:3年以上(不好制定,职业发展过程中,不断调整) 中期目标:6月-3年 短期目标...
    吕光朝阅读 324评论 1 1