mirror of
https://gitee.com/jzsw-it/yexuejc-base.git
synced 2025-06-07 22:34:04 +08:00
[update] JwtUtil 升级
This commit is contained in:
parent
2031a3aadf
commit
8e8f390b5d
@ -1,10 +1,12 @@
|
|||||||
package com.yexuejc.base.util;
|
package com.yexuejc.base.util;
|
||||||
|
|
||||||
import io.jsonwebtoken.Jwts;
|
|
||||||
import io.jsonwebtoken.SignatureAlgorithm;
|
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import javax.crypto.SecretKey;
|
||||||
|
|
||||||
|
import io.jsonwebtoken.Jwts;
|
||||||
|
import io.jsonwebtoken.io.Decoders;
|
||||||
|
import io.jsonwebtoken.security.Keys;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jwt工具类
|
* jwt工具类
|
||||||
@ -34,7 +36,7 @@ public class JwtUtil {
|
|||||||
*
|
*
|
||||||
* @param key 加密key 默认:h%OG8Y3WgA5AN7&6Ke7I#C1XvneW0N8a
|
* @param key 加密key 默认:h%OG8Y3WgA5AN7&6Ke7I#C1XvneW0N8a
|
||||||
* @param type 加密类型:默认JWT
|
* @param type 加密类型:默认JWT
|
||||||
* @param iss token发行商: 默认yexuejc.com
|
* @param iss token发行商: 默认yexuejc.top
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static JwtUtil config(String key, String type, String iss) {
|
public static JwtUtil config(String key, String type, String iss) {
|
||||||
@ -60,7 +62,7 @@ public class JwtUtil {
|
|||||||
/**
|
/**
|
||||||
* token发行商
|
* token发行商
|
||||||
*/
|
*/
|
||||||
private String JWT_CLAIMS_ISS = "yexuejc.com";
|
private String JWT_CLAIMS_ISS = "yexuejc.top";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加密内容生成token
|
* 加密内容生成token
|
||||||
@ -76,22 +78,22 @@ public class JwtUtil {
|
|||||||
subject = JsonUtil.obj2Json(subjectObj);
|
subject = JsonUtil.obj2Json(subjectObj);
|
||||||
}
|
}
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
String token = Jwts.builder()
|
return Jwts.builder()
|
||||||
// 设置token的唯一标识ID(claims.jti)
|
// 设置token的唯一标识ID(claims.jti)
|
||||||
.setId(StrUtil.genUUID())
|
.id(StrUtil.genUUID())
|
||||||
// 设置token类型(header.typ)
|
// 设置token类型(header.typ)
|
||||||
.setHeaderParam("typ", JWT_HEADER_TYP)
|
.header().add("typ", JWT_HEADER_TYP)
|
||||||
|
.and()
|
||||||
// 设置token发行时间为当前时间(claims.iat)
|
// 设置token发行时间为当前时间(claims.iat)
|
||||||
.setIssuedAt(now)
|
.issuedAt(now)
|
||||||
// 设置token发行商/发行者(claims.iss)
|
// 设置token发行商/发行者(claims.iss)
|
||||||
.setIssuer(JWT_CLAIMS_ISS)
|
.issuer(JWT_CLAIMS_ISS)
|
||||||
// 设置token用户定义主体(claims.sub)
|
// 设置token用户定义主体(claims.sub)
|
||||||
.setSubject(subject)
|
.subject(subject)
|
||||||
// 设置签名算法和KEY(signature)
|
// 设置算法签名,(密钥,加密算法)
|
||||||
.signWith(SignatureAlgorithm.HS512, JWT_SIGNATURE_KEY)
|
.signWith(getSecretKey(), Jwts.SIG.HS512)
|
||||||
// 生成token
|
// 生成token
|
||||||
.compact();
|
.compact();
|
||||||
return token;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -112,18 +114,8 @@ public class JwtUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public <T> T parse(String token, Class<T> cls) {
|
public <T> T parse(String token, Class<T> cls) {
|
||||||
String subject = null;
|
return JsonUtil.json2Obj(parseStr(token), cls);
|
||||||
try {
|
|
||||||
subject = Jwts.parser().setSigningKey(JWT_SIGNATURE_KEY).parseClaimsJws(token).getBody().getSubject();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
if (subject == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return JsonUtil.json2Obj(subject, cls);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 解密token为字符串
|
* 解密token为字符串
|
||||||
*
|
*
|
||||||
@ -131,12 +123,11 @@ public class JwtUtil {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String parseStr(String token) {
|
public String parseStr(String token) {
|
||||||
String subject = null;
|
return Jwts.parser().verifyWith(getSecretKey()).build().parseSignedClaims(token).getPayload().getSubject();
|
||||||
try {
|
}
|
||||||
subject = Jwts.parser().setSigningKey(JWT_SIGNATURE_KEY).parseClaimsJws(token).getBody().getSubject();
|
|
||||||
} catch (Exception e) {
|
private SecretKey getSecretKey() {
|
||||||
e.printStackTrace();
|
byte[] bytes = Decoders.BASE64.decode(JWT_SIGNATURE_KEY);
|
||||||
}
|
return Keys.hmacShaKeyFor(bytes);
|
||||||
return subject;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user