mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-04-05 17:37:53 +08:00
优化 sa-token-jwt 模块注释
This commit is contained in:
parent
c9711f1eba
commit
56832986f6
@ -12,9 +12,10 @@ import cn.hutool.jwt.JWT;
|
|||||||
import cn.hutool.jwt.JWTException;
|
import cn.hutool.jwt.JWTException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jwt 操作模板方法封装
|
* jwt 操作模板方法封装
|
||||||
* @author click33
|
|
||||||
*
|
*
|
||||||
|
* @author click33
|
||||||
|
* @since <= 1.34.0
|
||||||
*/
|
*/
|
||||||
public class SaJwtTemplate {
|
public class SaJwtTemplate {
|
||||||
|
|
||||||
@ -57,6 +58,7 @@ public class SaJwtTemplate {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建 jwt (简单方式)
|
* 创建 jwt (简单方式)
|
||||||
|
*
|
||||||
* @param loginType 登录类型
|
* @param loginType 登录类型
|
||||||
* @param loginId 账号id
|
* @param loginId 账号id
|
||||||
* @param extraData 扩展数据
|
* @param extraData 扩展数据
|
||||||
@ -69,6 +71,7 @@ public class SaJwtTemplate {
|
|||||||
JWT jwt = JWT.create()
|
JWT jwt = JWT.create()
|
||||||
.setPayload(LOGIN_TYPE, loginType)
|
.setPayload(LOGIN_TYPE, loginType)
|
||||||
.setPayload(LOGIN_ID, loginId)
|
.setPayload(LOGIN_ID, loginId)
|
||||||
|
// 塞入一个随机字符串,防止同账号下每次生成的 token 都一样的
|
||||||
.setPayload(RN_STR, SaFoxUtil.getRandomString(32))
|
.setPayload(RN_STR, SaFoxUtil.getRandomString(32))
|
||||||
.addPayloads(extraData)
|
.addPayloads(extraData)
|
||||||
;
|
;
|
||||||
@ -79,6 +82,7 @@ public class SaJwtTemplate {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建 jwt (全参数方式)
|
* 创建 jwt (全参数方式)
|
||||||
|
*
|
||||||
* @param loginType 账号类型
|
* @param loginType 账号类型
|
||||||
* @param loginId 账号id
|
* @param loginId 账号id
|
||||||
* @param device 设备类型
|
* @param device 设备类型
|
||||||
@ -90,7 +94,9 @@ public class SaJwtTemplate {
|
|||||||
public String createToken(String loginType, Object loginId, String device,
|
public String createToken(String loginType, Object loginId, String device,
|
||||||
long timeout, Map<String, Object> extraData, String keyt) {
|
long timeout, Map<String, Object> extraData, String keyt) {
|
||||||
|
|
||||||
// 计算有效期
|
// 计算 eff 有效期:
|
||||||
|
// 如果 timeout 指定为 -1,那么 eff 也为 -1,代表永不过期
|
||||||
|
// 如果 timeout 指定为一个具体的值,那么 eff 为 13 位时间戳,代表此 token 到期的时间
|
||||||
long effTime = timeout;
|
long effTime = timeout;
|
||||||
if(timeout != NEVER_EXPIRE) {
|
if(timeout != NEVER_EXPIRE) {
|
||||||
effTime = timeout * 1000 + System.currentTimeMillis();
|
effTime = timeout * 1000 + System.currentTimeMillis();
|
||||||
@ -102,6 +108,7 @@ public class SaJwtTemplate {
|
|||||||
.setPayload(LOGIN_ID, loginId)
|
.setPayload(LOGIN_ID, loginId)
|
||||||
.setPayload(DEVICE, device)
|
.setPayload(DEVICE, device)
|
||||||
.setPayload(EFF, effTime)
|
.setPayload(EFF, effTime)
|
||||||
|
// 塞入一个随机字符串,防止同账号同一毫秒下每次生成的 token 都一样的
|
||||||
.setPayload(RN_STR, SaFoxUtil.getRandomString(32))
|
.setPayload(RN_STR, SaFoxUtil.getRandomString(32))
|
||||||
.addPayloads(extraData);
|
.addPayloads(extraData);
|
||||||
|
|
||||||
@ -110,7 +117,8 @@ public class SaJwtTemplate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 为 JWT 对象和 keyt 秘钥,生成 token 字符串
|
* 为 JWT 对象和 keyt 秘钥,生成 token 字符串
|
||||||
|
*
|
||||||
* @param jwt JWT构建对象
|
* @param jwt JWT构建对象
|
||||||
* @param keyt 秘钥
|
* @param keyt 秘钥
|
||||||
* @return 根据 JWT 对象和 keyt 秘钥,生成的 token 字符串
|
* @return 根据 JWT 对象和 keyt 秘钥,生成的 token 字符串
|
||||||
@ -122,7 +130,8 @@ public class SaJwtTemplate {
|
|||||||
// ------ 解析
|
// ------ 解析
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jwt 解析
|
* jwt 解析
|
||||||
|
*
|
||||||
* @param token Jwt-Token值
|
* @param token Jwt-Token值
|
||||||
* @param loginType 登录类型
|
* @param loginType 登录类型
|
||||||
* @param keyt 秘钥
|
* @param keyt 秘钥
|
||||||
@ -132,7 +141,7 @@ public class SaJwtTemplate {
|
|||||||
public JWT parseToken(String token, String loginType, String keyt, boolean isCheckTimeout) {
|
public JWT parseToken(String token, String loginType, String keyt, boolean isCheckTimeout) {
|
||||||
|
|
||||||
// 秘钥不可以为空
|
// 秘钥不可以为空
|
||||||
if(keyt == null) {
|
if(SaFoxUtil.isEmpty(keyt)) {
|
||||||
throw new SaJwtException("请配置 jwt 秘钥");
|
throw new SaJwtException("请配置 jwt 秘钥");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,7 +151,7 @@ public class SaJwtTemplate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 解析
|
// 解析
|
||||||
JWT jwt = null;
|
JWT jwt;
|
||||||
try {
|
try {
|
||||||
jwt = JWT.of(token);
|
jwt = JWT.of(token);
|
||||||
} catch (JWTException e) {
|
} catch (JWTException e) {
|
||||||
|
@ -6,9 +6,10 @@ import cn.hutool.json.JSONObject;
|
|||||||
import cn.hutool.jwt.JWT;
|
import cn.hutool.jwt.JWT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jwt 操作工具类封装
|
* jwt 操作工具类封装
|
||||||
* @author click33
|
|
||||||
*
|
*
|
||||||
|
* @author click33
|
||||||
|
* @since <= 1.34.0
|
||||||
*/
|
*/
|
||||||
public class SaJwtUtil {
|
public class SaJwtUtil {
|
||||||
|
|
||||||
|
@ -13,9 +13,10 @@ import cn.dev33.satoken.stp.StpLogic;
|
|||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sa-Token 整合 jwt -- Mixin 混入模式
|
* Sa-Token 整合 jwt -- Mixin 混入模式
|
||||||
* @author click33
|
|
||||||
*
|
*
|
||||||
|
* @author click33
|
||||||
|
* @since <= 1.34.0
|
||||||
*/
|
*/
|
||||||
public class StpLogicJwtForMixin extends StpLogic {
|
public class StpLogicJwtForMixin extends StpLogic {
|
||||||
|
|
||||||
|
@ -8,9 +8,10 @@ import cn.dev33.satoken.stp.StpLogic;
|
|||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sa-Token 整合 jwt -- Simple 简单模式
|
* Sa-Token 整合 jwt -- Simple 简单模式
|
||||||
* @author click33
|
|
||||||
*
|
*
|
||||||
|
* @author click33
|
||||||
|
* @since <= 1.34.0
|
||||||
*/
|
*/
|
||||||
public class StpLogicJwtForSimple extends StpLogic {
|
public class StpLogicJwtForSimple extends StpLogic {
|
||||||
|
|
||||||
|
@ -15,9 +15,10 @@ import cn.dev33.satoken.stp.StpUtil;
|
|||||||
import cn.dev33.satoken.util.SaFoxUtil;
|
import cn.dev33.satoken.util.SaFoxUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sa-Token 整合 jwt -- Stateless 无状态模式
|
* Sa-Token 整合 jwt -- Stateless 无状态模式
|
||||||
|
*
|
||||||
* @author click33
|
* @author click33
|
||||||
*
|
* @since <= 1.34.0
|
||||||
*/
|
*/
|
||||||
public class StpLogicJwtForStateless extends StpLogic {
|
public class StpLogicJwtForStateless extends StpLogic {
|
||||||
|
|
||||||
|
@ -6,24 +6,24 @@ package cn.dev33.satoken.jwt.error;
|
|||||||
* @author click33
|
* @author click33
|
||||||
* @since 2022-10-31
|
* @since 2022-10-31
|
||||||
*/
|
*/
|
||||||
public class SaJwtErrorCode {
|
public interface SaJwtErrorCode {
|
||||||
|
|
||||||
/** 对 jwt 字符串解析失败 */
|
/** 对 jwt 字符串解析失败 */
|
||||||
public static final int CODE_30201 = 30201;
|
int CODE_30201 = 30201;
|
||||||
|
|
||||||
/** 此 jwt 的签名无效 */
|
/** 此 jwt 的签名无效 */
|
||||||
public static final int CODE_30202 = 30202;
|
int CODE_30202 = 30202;
|
||||||
|
|
||||||
/** 此 jwt 的 loginType 字段不符合预期 */
|
/** 此 jwt 的 loginType 字段不符合预期 */
|
||||||
public static final int CODE_30203 = 30203;
|
int CODE_30203 = 30203;
|
||||||
|
|
||||||
/** 此 jwt 已超时 */
|
/** 此 jwt 已超时 */
|
||||||
public static final int CODE_30204 = 30204;
|
int CODE_30204 = 30204;
|
||||||
|
|
||||||
/** 没有配置jwt秘钥 */
|
/** 没有配置jwt秘钥 */
|
||||||
public static final int CODE_30205 = 30205;
|
int CODE_30205 = 30205;
|
||||||
|
|
||||||
/** 登录时提供的账号id为空 */
|
/** 登录时提供的账号id为空 */
|
||||||
public static final int CODE_30206 = 30206;
|
int CODE_30206 = 30206;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import cn.dev33.satoken.util.SaFoxUtil;
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 一个异常:代表 jwt 相关错误
|
* 一个异常:代表 jwt 模块相关错误
|
||||||
*
|
*
|
||||||
* @author click33
|
* @author click33
|
||||||
* @since 2022-10-31
|
* @since 2022-10-31
|
||||||
|
Loading…
Reference in New Issue
Block a user