# JQuicker
**Repository Path**: giteeforsyf/jjwtutil
## Basic Information
- **Project Name**: JQuicker
- **Description**: 较为封装彻底的JWT工具类,使用jjwt
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: https://gitee.com/giteeforsyf/jjwtutil.git
- **GVP Project**: No
## Statistics
- **Stars**: 6
- **Forks**: 0
- **Created**: 2022-06-18
- **Last Updated**: 2023-06-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JQuicker
正式改名JQuicker
旨在开箱即用,几乎无需任何学习成本,项目JDK:11
## 升级详情
1. 允许使用HS384进行加密
2. 更改为JQuicker
3. 些许函数名称改变
4. 增加了加密密钥的丰富性
5. 优化了整体框架
6. 使用更加方便灵活
7. 将默认构造和实际构造分离
## 使用方式(推荐)
下载后进入项目打包为maven依赖进行导入
```xml
cn.fly
JQuicker
1.2.0-SNAPSHOT
```
## 使用示例(默认构造器)
```java
//构造
final val jQuicker = new JQuicker();
//设置使用默认构造器
jQuicker.defaultBuilder();
//设置token中存放的数据
final val hashMap = new HashMap();
hashMap.put("user","zhamsag");
//将数据设置到token中
jQuicker.setStoreData(hashMap);
//构造token
final val token = jQuicker.createToken();
System.out.println(token);
```
## 使用示例(自定义构造)
```java
//构造
final val jQuicker = new JQuicker();
//关闭默认构造器
jQuicker.defaultBuilder(false);
//自定义加密算法
jQuicker.initSignatureAlgorithm(SignatureAlgorithm.HS384);
//自定义加密密钥
jQuicker.initSecretKey(JWTDefaultSecretKey.HS384_SECRET_KEY);
//自定义过期时间
jQuicker.initExpirationTime(JWTDefaultExpirationTime.HALF_MONTH);
//设置数据
final val hashMap = new HashMap();
hashMap.put("user","zhamsag");
jQuicker.setStoreData(hashMap);
//构造token
final val token = jQuicker.createToken();
System.out.println(token);
//解析荷载数据,可获取存储的数据
final val claims = jQuicker.analyzePayLoad(token);
claims.forEach((s, o) -> System.out.println(s+":-:"+o));
//解析Header
final val jwsHeader = jQuicker.analyzeHeader(token);
System.out.println(jwsHeader);
//获取过期时间(距离过期时间还剩多少)
final val restTime = jQuicker.getRestTime(token, JWTDefaultExpirationTime.TimeUnit.HOUR);
System.out.println(restTime);
```
## 具体使用
请参看源码,源码中有全中文注释
## 测试示例
```java
@Test
void len(){
System.out.println(JWTDefaultSecretKey.HS384_SECRET_KEY.getValue().length());
}
@Test
void ran(){
final val jQuicker = new JQuicker();
final val defaultExpirationTimeToString = jQuicker.getDefaultExpirationTimeToString(JWTDefaultExpirationTime.TimeUnit.HOUR);
System.out.println(defaultExpirationTimeToString);
}
@Test
void tie(){
final val featureTimeStamp = JWTDefaultExpirationTime.getFeatureTimeStamp(JWTDefaultExpirationTime.DAY);
System.out.println(featureTimeStamp);
}
@Test
void tt(){
final val jQuicker = new JQuicker();
jQuicker.defaultBuilder();
final val hashMap = new HashMap();
hashMap.put("user","zhamsag");
jQuicker.setStoreData(hashMap);
final val token = jQuicker.createToken();
System.out.println(token);
}
@Test
void anl(){
final val jQuicker = new JQuicker();
jQuicker.defaultBuilder();
final val claims = jQuicker.analyzePayLoad("eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiemhhbXNhZyIsImNyZWF0ZSI6MTY2MDU2NTg0OTU4NywiZXhwIjoxNjYxMTcwNjQ5LCJpYXQiOjE2NjA1NjU4NDl9.hc2OiMI2xIZe_ccbY8jfyF3zd4ybLBC2TyUrIqftp4Y");
claims.forEach((s, o) -> System.out.println(s+":-:"+o));
System.out.println(jQuicker.analyzeExpirationOrNot("eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiemhhbXNhZyIsImNyZWF0ZSI6MTY2MDU2NTg0OTU4NywiZXhwIjoxNjYxMTcwNjQ5LCJpYXQiOjE2NjA1NjU4NDl9.hc2OiMI2xIZe_ccbY8jfyF3zd4ybLBC2TyUrIqftp4Y"));;
}
@Test
void sad(){
final val jQuicker = new JQuicker();
jQuicker.defaultBuilder(false);
jQuicker.initSignatureAlgorithm(SignatureAlgorithm.HS384);
jQuicker.initSecretKey(JWTDefaultSecretKey.HS384_SECRET_KEY);
jQuicker.initExpirationTime(JWTDefaultExpirationTime.HALF_MONTH);
final val hashMap = new HashMap();
hashMap.put("user","zhamsag");
jQuicker.setStoreData(hashMap);
final val token = jQuicker.createToken();
System.out.println(token);
final val claims = jQuicker.analyzePayLoad(token);
claims.forEach((s, o) -> System.out.println(s+":-:"+o));
final val jwsHeader = jQuicker.analyzeHeader(token);
System.out.println(jwsHeader);
final val restTime = jQuicker.getRestTime(token, JWTDefaultExpirationTime.TimeUnit.HOUR);
System.out.println(restTime);
}
```
## 1.2.1版本更新预告
1. 优化架构
2. 提供链式方式调用
3. 更新HS512加密
# JJWTUtil工具类v1.1.2
JWT工具类,使用jjwt构造
### 工具类具体简介
1. JJWTUtil:核心工具类!
2. JWTDefaultExpirationTime:默认时间枚举类(推荐直接调用)
3. JWTDefaultSecretKey:(默认密钥,当前提供2个,后续继续增加)
## 使用方法1(源码)
下载后直接将源码导入自己的项目中使用
## 使用方法2
模块化为自己的本地依赖,通过依赖方式导入使用
## 该工具类的简单调用(使用默认构造器)
```java
JJWTUtil jjwtUtil = new JJWTUtil();
//通过工具类提供的默认构造器直接生成默认加密算法、加密密钥、持续周期
jjwtUtil.defaultBuilder(jjwtUtil);
//设置传入的内容
Claims claims = Jwts.claims();
claims.put("user", "test01");
//构造token
String token = jjwtUtil.createToken(claims);
//获取payload
Claims tokenPayLoad = jjwtUtil.getTokenPayLoad(token);
//获取token剩余有效时间
Long tokenExpirationTime = jjwtUtil.getTokenExpirationTime(token);
```
## 该工具类的简单调用(自定义)
```java
JJWTUtil jjwtUtil = new JJWTUtil();
//设置持续时间
jjwtUtil.initExpirationTime(JWTDefaultExpirationTime.DAY);
//设置密钥
jjwtUtil.initSecretKey(JWTDefaultSecretKey.DEFAULT_SECRET_KEY2);
//设置加密算法
jjwtUtil.initSignatureAlgorithm(SignatureAlgorithm.HS256);
//设置载荷
Claims claims = Jwts.claims();
claims.put("user", "test02");
//构造token
String token = jjwtUtil.createToken(claims);
```
## 注意事项
当前版本未适配HS256,RS256标准长度以上的加密算法
若需要使用HS512、HS384、RS384、RS384,请自己设定密钥(注意长度)
```java
jjwtUtil.initSecretKey("testsajhdsdsjakadhjshdskdhjshd...");
```
## 具体使用
请参看源码,源码中有全中文注释
## 1.2版本更新预告
1. 增加加密算法适配
2. 增加默认密钥结合加密算法适配
3. 增加直接格式化时间的剩余时间查询方法(更加直观)