diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java index b31c8fce..09ea2826 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java @@ -351,7 +351,7 @@ public class StpLogic { * @return 返回会话令牌 */ public String createLoginSession(Object id, SaLoginModel loginModel) { - + // ------ 前置检查 SaTokenException.throwByNull(id, "账号id不能为空", SaErrorCode.CODE_11002); @@ -395,7 +395,7 @@ public class StpLogic { * @return 返回 Token */ protected String distUsableToken(Object id, SaLoginModel loginModel) { - + // 获取全局配置 Boolean isConcurrent = getConfig().getIsConcurrent(); diff --git a/sa-token-demo/sa-token-demo-jwt/pom.xml b/sa-token-demo/sa-token-demo-jwt/pom.xml index 8f184e81..9e200919 100644 --- a/sa-token-demo/sa-token-demo-jwt/pom.xml +++ b/sa-token-demo/sa-token-demo-jwt/pom.xml @@ -42,7 +42,7 @@ - + diff --git a/sa-token-doc/plugin/jwt-extend.md b/sa-token-doc/plugin/jwt-extend.md index d5b17e50..7aed51f9 100644 --- a/sa-token-doc/plugin/jwt-extend.md +++ b/sa-token-doc/plugin/jwt-extend.md @@ -234,6 +234,12 @@ public void setSaJwtTemplate() { 技术上来讲无法将其踢下线,所以此时顶人下线和踢人下线等 API 都属于不可用状态,所以此时 `is-concurrent` 配置项必须配置为 `true`。 +##### 3、使用 jwt-mixin 模式后,max-try-times 恒等于 -1。 + +为防止框架错误判断 token 唯一性,当使用 jwt-mixin 模式后,`max-try-times` 恒等于 -1。 + + + diff --git a/sa-token-doc/use/config.md b/sa-token-doc/use/config.md index aa5bd486..7544bd3e 100644 --- a/sa-token-doc/use/config.md +++ b/sa-token-doc/use/config.md @@ -110,7 +110,7 @@ public class SaTokenConfigure { --- ### 所有可配置项 -你不必立刻掌握整个表格,只需要在用到某个功能时再详细查阅它即可 +**你不必立刻掌握整个表格,只需要在用到某个功能时再详细查阅它即可** | 参数名称 | 类型 | 默认值 | 说明 | | :-------- | :-------- | :-------- | :-------- | @@ -120,6 +120,7 @@ public class SaTokenConfigure { | isConcurrent | Boolean | true | 是否允许同一账号并发登录 (为 true 时允许一起登录,为 false 时新登录挤掉旧登录) | | isShare | Boolean | true | 在多人登录同一账号时,是否共用一个token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token) | | maxLoginCount | int | 12 | 同一账号最大登录数量,-1代表不限 (只有在 `isConcurrent=true`, `isShare=false` 时此配置才有效),[详解](/use/config?id=配置项详解:maxlogincount) | +| maxTryTimes | int | 12 | 在每次创建 Token 时的最高循环次数,用于保证 Token 唯一性(-1=不循环重试,直接使用) | | isReadBody | Boolean | true | 是否尝试从 请求体 里读取 Token | | isReadHeader | Boolean | true | 是否尝试从 header 里读取 Token | | isReadCookie | Boolean | true | 是否尝试从 cookie 里读取 Token,此值为 false 后,`StpUtil.login(id)` 登录时也不会再往前端注入Cookie | diff --git a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForMixin.java b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForMixin.java index 21e7fe3f..5b2612bb 100644 --- a/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForMixin.java +++ b/sa-token-plugin/sa-token-jwt/src/main/java/cn/dev33/satoken/jwt/StpLogicJwtForMixin.java @@ -212,12 +212,21 @@ public class StpLogicJwtForMixin extends StpLogic { // ------------------- Bean对象代理 ------------------- /** - * 返回全局配置对象的isShare属性 + * 返回全局配置对象的 isShare 属性 * @return / */ @Override public boolean getConfigOfIsShare() { return false; } - + + /** + * 返回全局配置对象的 maxTryTimes 属性 + * @return / + */ + @Override + public int getConfigOfMaxTryTimes() { + return -1; + } + }