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,242評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,914評論 18 139
  • 昨天去上選修課,老師說她明天都會寫日記,日記是一個很好的載體。所以盡管我文筆不好,我也想寫些什么。 昨天的天氣很好...
    岳喬子閱讀 260評論 0 0
  • 林慧慧和清輝是一對離異夫妻,婚前父母介紹相親結婚,婚后三年半因為感情基礎薄弱,男方起訴離婚。孩子一歲2個月,夫妻分...
    努力紅閱讀 1,258評論 0 1
  • 1:目標不明是關鍵問題: 長期目標:3年以上(不好制定,職業發展過程中,不斷調整) 中期目標:6月-3年 短期目標...
    呂光朝閱讀 318評論 1 1