mirror of
https://gitee.com/dromara/sa-token.git
synced 2024-11-30 02:48:10 +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;
|
||||
|
||||
/**
|
||||
* 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) {
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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;
|
||||
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import cn.dev33.satoken.util.SaFoxUtil;
|
||||
|
||||
|
||||
/**
|
||||
* 一个异常:代表 jwt 相关错误
|
||||
* 一个异常:代表 jwt 模块相关错误
|
||||
*
|
||||
* @author click33
|
||||
* @since 2022-10-31
|
||||
|
Loading…
Reference in New Issue
Block a user