mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-12-22 03:19:44 +08:00
优化 sa-token-temp-jwt 模块注释
This commit is contained in:
@@ -9,9 +9,10 @@ import io.jsonwebtoken.Jwts;
|
|||||||
import io.jsonwebtoken.SignatureAlgorithm;
|
import io.jsonwebtoken.SignatureAlgorithm;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jwt操作工具类
|
* jwt 相关操作工具类,封装一下
|
||||||
* @author click33
|
|
||||||
*
|
*
|
||||||
|
* @author click33
|
||||||
|
* @since <= 1.34.0
|
||||||
*/
|
*/
|
||||||
public class SaJwtUtil {
|
public class SaJwtUtil {
|
||||||
|
|
||||||
@@ -30,6 +31,7 @@ public class SaJwtUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据指定值创建 jwt-token
|
* 根据指定值创建 jwt-token
|
||||||
|
*
|
||||||
* @param key 存储value使用的key
|
* @param key 存储value使用的key
|
||||||
* @param value 要保存的值
|
* @param value 要保存的值
|
||||||
* @param timeout token有效期 (单位 秒)
|
* @param timeout token有效期 (单位 秒)
|
||||||
@@ -37,17 +39,21 @@ public class SaJwtUtil {
|
|||||||
* @return jwt-token
|
* @return jwt-token
|
||||||
*/
|
*/
|
||||||
public static String createToken(String key, Object value, long timeout, String keyt) {
|
public static String createToken(String key, Object value, long timeout, String keyt) {
|
||||||
// 计算eff有效期
|
// 计算eff有效期:
|
||||||
|
// 如果 timeout 指定为 -1,那么 eff 也为 -1,代表永不过期
|
||||||
|
// 如果 timeout 指定为一个具体的值,那么 eff 为 13 位时间戳,代表此数据到期的时间
|
||||||
long eff = timeout;
|
long eff = timeout;
|
||||||
if(timeout != NEVER_EXPIRE) {
|
if(timeout != NEVER_EXPIRE) {
|
||||||
eff = timeout * 1000 + System.currentTimeMillis();
|
eff = timeout * 1000 + System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 在这里你可以使用官方提供的claim方法构建载荷,也可以使用setPayload自定义载荷,但是两者不可一起使用
|
// 在这里你可以使用官方提供的claim方法构建载荷,也可以使用setPayload自定义载荷,但是两者不可一起使用
|
||||||
JwtBuilder builder = Jwts.builder()
|
JwtBuilder builder = Jwts.builder()
|
||||||
// .setHeaderParam("typ", "JWT")
|
// .setHeaderParam("typ", "JWT")
|
||||||
.claim(KEY_VALUE + key, value)
|
.claim(KEY_VALUE + key, value)
|
||||||
.claim(KEY_EFF, eff)
|
.claim(KEY_EFF, eff)
|
||||||
.signWith(SignatureAlgorithm.HS256, keyt.getBytes());
|
.signWith(SignatureAlgorithm.HS256, keyt.getBytes());
|
||||||
|
|
||||||
// 生成jwt-token
|
// 生成jwt-token
|
||||||
return builder.compact();
|
return builder.compact();
|
||||||
}
|
}
|
||||||
@@ -63,6 +69,7 @@ public class SaJwtUtil {
|
|||||||
Claims claims = Jwts.parser()
|
Claims claims = Jwts.parser()
|
||||||
.setSigningKey(keyt.getBytes())
|
.setSigningKey(keyt.getBytes())
|
||||||
.parseClaimsJws(jwtToken).getBody();
|
.parseClaimsJws(jwtToken).getBody();
|
||||||
|
|
||||||
// 返回
|
// 返回
|
||||||
return claims;
|
return claims;
|
||||||
}
|
}
|
||||||
@@ -81,7 +88,7 @@ public class SaJwtUtil {
|
|||||||
// 验证是否超时
|
// 验证是否超时
|
||||||
Long eff = claims.get(KEY_EFF, Long.class);
|
Long eff = claims.get(KEY_EFF, Long.class);
|
||||||
if((eff == null || eff < System.currentTimeMillis()) && eff != NEVER_EXPIRE) {
|
if((eff == null || eff < System.currentTimeMillis()) && eff != NEVER_EXPIRE) {
|
||||||
throw new SaTokenException("Token已超时").setCode(SaTempJwtErrorCode.CODE_30303);
|
throw new SaTokenException("token 已超时,无法解析:" + jwtToken).setCode(SaTempJwtErrorCode.CODE_30303);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取数据
|
// 获取数据
|
||||||
@@ -98,7 +105,7 @@ public class SaJwtUtil {
|
|||||||
// 取出数据
|
// 取出数据
|
||||||
Claims claims = parseToken(jwtToken, keyt);
|
Claims claims = parseToken(jwtToken, keyt);
|
||||||
|
|
||||||
// 如果给定的key不对
|
// 如果给定的 key 不对
|
||||||
if(claims.get(KEY_VALUE + key) == null) {
|
if(claims.get(KEY_VALUE + key) == null) {
|
||||||
return SaTokenDao.NOT_VALUE_EXPIRE;
|
return SaTokenDao.NOT_VALUE_EXPIRE;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,10 @@ import cn.dev33.satoken.temp.jwt.error.SaTempJwtErrorCode;
|
|||||||
import cn.dev33.satoken.util.SaFoxUtil;
|
import cn.dev33.satoken.util.SaFoxUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sa-Token 临时令牌验证模块接口 JWT实现类
|
* Sa-Token 临时令牌验证模块接口 JWT实现类,提供以 JWT 为逻辑内核的临时 token 验证功能
|
||||||
* @author click33
|
|
||||||
*
|
*
|
||||||
|
* @author click33
|
||||||
|
* @since <= 1.34.0
|
||||||
*/
|
*/
|
||||||
public class SaTempForJwt implements SaTempInterface {
|
public class SaTempForJwt implements SaTempInterface {
|
||||||
|
|
||||||
|
|||||||
@@ -6,15 +6,15 @@ package cn.dev33.satoken.temp.jwt.error;
|
|||||||
* @author click33
|
* @author click33
|
||||||
* @since 2022-10-31
|
* @since 2022-10-31
|
||||||
*/
|
*/
|
||||||
public class SaTempJwtErrorCode {
|
public interface SaTempJwtErrorCode {
|
||||||
|
|
||||||
/** jwt 模式没有提供秘钥 */
|
/** jwt 模式没有提供秘钥 */
|
||||||
public static final int CODE_30301 = 30301;
|
int CODE_30301 = 30301;
|
||||||
|
|
||||||
/** jwt 模式不可以删除 Token */
|
/** jwt 模式不可以删除 Token */
|
||||||
public static final int CODE_30302 = 30302;
|
int CODE_30302 = 30302;
|
||||||
|
|
||||||
/** Token已超时 */
|
/** Token已超时 */
|
||||||
public static final int CODE_30303 = 30303;
|
int CODE_30303 = 30303;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user