优化 sa-token-jwt 模块注释

This commit is contained in:
click33 2023-05-12 18:27:59 +08:00
parent c9711f1eba
commit 56832986f6
7 changed files with 36 additions and 23 deletions

View File

@ -12,9 +12,10 @@ import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTException;
/**
* jwt 操作模板方法封装
* @author click33
* jwt 操作模板方法封装
*
* @author click33
* @since <= 1.34.0
*/
public class SaJwtTemplate {
@ -57,6 +58,7 @@ public class SaJwtTemplate {
/**
* 创建 jwt 简单方式
*
* @param loginType 登录类型
* @param loginId 账号id
* @param extraData 扩展数据
@ -69,6 +71,7 @@ public class SaJwtTemplate {
JWT jwt = JWT.create()
.setPayload(LOGIN_TYPE, loginType)
.setPayload(LOGIN_ID, loginId)
// 塞入一个随机字符串防止同账号下每次生成的 token 都一样的
.setPayload(RN_STR, SaFoxUtil.getRandomString(32))
.addPayloads(extraData)
;
@ -79,6 +82,7 @@ public class SaJwtTemplate {
/**
* 创建 jwt 全参数方式
*
* @param loginType 账号类型
* @param loginId 账号id
* @param device 设备类型
@ -90,7 +94,9 @@ public class SaJwtTemplate {
public String createToken(String loginType, Object loginId, String device,
long timeout, Map<String, Object> extraData, String keyt) {
// 计算有效期
// 计算 eff 有效期
// 如果 timeout 指定为 -1那么 eff 也为 -1代表永不过期
// 如果 timeout 指定为一个具体的值那么 eff 13 位时间戳代表此 token 到期的时间
long effTime = timeout;
if(timeout != NEVER_EXPIRE) {
effTime = timeout * 1000 + System.currentTimeMillis();
@ -102,6 +108,7 @@ public class SaJwtTemplate {
.setPayload(LOGIN_ID, loginId)
.setPayload(DEVICE, device)
.setPayload(EFF, effTime)
// 塞入一个随机字符串防止同账号同一毫秒下每次生成的 token 都一样的
.setPayload(RN_STR, SaFoxUtil.getRandomString(32))
.addPayloads(extraData);
@ -110,7 +117,8 @@ public class SaJwtTemplate {
}
/**
* JWT 对象和 keyt 秘钥生成 token 字符串
* JWT 对象和 keyt 秘钥生成 token 字符串
*
* @param jwt JWT构建对象
* @param keyt 秘钥
* @return 根据 JWT 对象和 keyt 秘钥生成的 token 字符串
@ -122,7 +130,8 @@ public class SaJwtTemplate {
// ------ 解析
/**
* jwt 解析
* jwt 解析
*
* @param token Jwt-Token值
* @param loginType 登录类型
* @param keyt 秘钥
@ -132,7 +141,7 @@ public class SaJwtTemplate {
public JWT parseToken(String token, String loginType, String keyt, boolean isCheckTimeout) {
// 秘钥不可以为空
if(keyt == null) {
if(SaFoxUtil.isEmpty(keyt)) {
throw new SaJwtException("请配置 jwt 秘钥");
}
@ -142,7 +151,7 @@ public class SaJwtTemplate {
}
// 解析
JWT jwt = null;
JWT jwt;
try {
jwt = JWT.of(token);
} catch (JWTException e) {

View File

@ -6,9 +6,10 @@ import cn.hutool.json.JSONObject;
import cn.hutool.jwt.JWT;
/**
* jwt 操作工具类封装
* @author click33
* jwt 操作工具类封装
*
* @author click33
* @since <= 1.34.0
*/
public class SaJwtUtil {

View File

@ -13,9 +13,10 @@ import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
/**
* Sa-Token 整合 jwt -- Mixin 混入模式
* @author click33
* Sa-Token 整合 jwt -- Mixin 混入模式
*
* @author click33
* @since <= 1.34.0
*/
public class StpLogicJwtForMixin extends StpLogic {

View File

@ -8,9 +8,10 @@ import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
/**
* Sa-Token 整合 jwt -- Simple 简单模式
* @author click33
* Sa-Token 整合 jwt -- Simple 简单模式
*
* @author click33
* @since <= 1.34.0
*/
public class StpLogicJwtForSimple extends StpLogic {

View File

@ -15,9 +15,10 @@ import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaFoxUtil;
/**
* Sa-Token 整合 jwt -- Stateless 无状态模式
* Sa-Token 整合 jwt -- Stateless 无状态模式
*
* @author click33
*
* @since <= 1.34.0
*/
public class StpLogicJwtForStateless extends StpLogic {

View File

@ -6,24 +6,24 @@ package cn.dev33.satoken.jwt.error;
* @author click33
* @since 2022-10-31
*/
public class SaJwtErrorCode {
public interface SaJwtErrorCode {
/** 对 jwt 字符串解析失败 */
public static final int CODE_30201 = 30201;
int CODE_30201 = 30201;
/** 此 jwt 的签名无效 */
public static final int CODE_30202 = 30202;
int CODE_30202 = 30202;
/** 此 jwt 的 loginType 字段不符合预期 */
public static final int CODE_30203 = 30203;
int CODE_30203 = 30203;
/** 此 jwt 已超时 */
public static final int CODE_30204 = 30204;
int CODE_30204 = 30204;
/** 没有配置jwt秘钥 */
public static final int CODE_30205 = 30205;
int CODE_30205 = 30205;
/** 登录时提供的账号id为空 */
public static final int CODE_30206 = 30206;
int CODE_30206 = 30206;
}

View File

@ -5,7 +5,7 @@ import cn.dev33.satoken.util.SaFoxUtil;
/**
* 一个异常代表 jwt 相关错误
* 一个异常代表 jwt 模块相关错误
*
* @author click33
* @since 2022-10-31