diff --git a/README.md b/README.md
index 6237bef0..aa2d02a0 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
-Sa-Token v1.31.0.RC
+Sa-Token v1.31.0
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!
diff --git a/pom.xml b/pom.xml
index dbc9222e..8d685a71 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
- 1.31.0.RC
+ 1.31.0
1.8
utf-8
utf-8
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java
index 4573735a..f52b9ad4 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/util/SaTokenConsts.java
@@ -15,7 +15,7 @@ public class SaTokenConsts {
/**
* Sa-Token 当前版本号
*/
- public static final String VERSION_NO = "v1.31.0.RC";
+ public static final String VERSION_NO = "v1.31.0";
/**
* Sa-Token 开源地址 Gitee
diff --git a/sa-token-demo/sa-token-demo-alone-redis/pom.xml b/sa-token-demo/sa-token-demo-alone-redis/pom.xml
index 5f545eb6..9fbf24b6 100644
--- a/sa-token-demo/sa-token-demo-alone-redis/pom.xml
+++ b/sa-token-demo/sa-token-demo-alone-redis/pom.xml
@@ -16,7 +16,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-dubbo-consumer/pom.xml b/sa-token-demo/sa-token-demo-dubbo-consumer/pom.xml
index a86d1b2d..bc043000 100644
--- a/sa-token-demo/sa-token-demo-dubbo-consumer/pom.xml
+++ b/sa-token-demo/sa-token-demo-dubbo-consumer/pom.xml
@@ -16,7 +16,7 @@
1.8
3.1.1
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-dubbo-provider/pom.xml b/sa-token-demo/sa-token-demo-dubbo-provider/pom.xml
index 2dc64ec6..473ace45 100644
--- a/sa-token-demo/sa-token-demo-dubbo-provider/pom.xml
+++ b/sa-token-demo/sa-token-demo-dubbo-provider/pom.xml
@@ -16,7 +16,7 @@
1.8
3.1.1
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-grpc/pom.xml b/sa-token-demo/sa-token-demo-grpc/pom.xml
index 5286d54b..ccad1242 100644
--- a/sa-token-demo/sa-token-demo-grpc/pom.xml
+++ b/sa-token-demo/sa-token-demo-grpc/pom.xml
@@ -27,7 +27,7 @@
UTF-8
UTF-8
1.18.10
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-jwt/pom.xml b/sa-token-demo/sa-token-demo-jwt/pom.xml
index 828f2025..98f5e2a3 100644
--- a/sa-token-demo/sa-token-demo-jwt/pom.xml
+++ b/sa-token-demo/sa-token-demo-jwt/pom.xml
@@ -16,7 +16,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-oauth2-client/pom.xml b/sa-token-demo/sa-token-demo-oauth2-client/pom.xml
index 9405f878..1aa7ffea 100644
--- a/sa-token-demo/sa-token-demo-oauth2-client/pom.xml
+++ b/sa-token-demo/sa-token-demo-oauth2-client/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-oauth2-server/pom.xml b/sa-token-demo/sa-token-demo-oauth2-server/pom.xml
index 26870148..d48e5b82 100644
--- a/sa-token-demo/sa-token-demo-oauth2-server/pom.xml
+++ b/sa-token-demo/sa-token-demo-oauth2-server/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-quick-login/pom.xml b/sa-token-demo/sa-token-demo-quick-login/pom.xml
index a67e2766..4302e031 100644
--- a/sa-token-demo/sa-token-demo-quick-login/pom.xml
+++ b/sa-token-demo/sa-token-demo-quick-login/pom.xml
@@ -16,7 +16,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-solon/pom.xml b/sa-token-demo/sa-token-demo-solon/pom.xml
index c29ec4fa..1e545f76 100644
--- a/sa-token-demo/sa-token-demo-solon/pom.xml
+++ b/sa-token-demo/sa-token-demo-solon/pom.xml
@@ -9,7 +9,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-springboot-redis/pom.xml b/sa-token-demo/sa-token-demo-springboot-redis/pom.xml
index 2394ae3e..187e5c09 100644
--- a/sa-token-demo/sa-token-demo-springboot-redis/pom.xml
+++ b/sa-token-demo/sa-token-demo-springboot-redis/pom.xml
@@ -17,7 +17,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-springboot/pom.xml b/sa-token-demo/sa-token-demo-springboot/pom.xml
index db478fb6..8fe23972 100644
--- a/sa-token-demo/sa-token-demo-springboot/pom.xml
+++ b/sa-token-demo/sa-token-demo-springboot/pom.xml
@@ -17,7 +17,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-sso-server/pom.xml b/sa-token-demo/sa-token-demo-sso-server/pom.xml
index ca1ce2cb..25dbb860 100644
--- a/sa-token-demo/sa-token-demo-sso-server/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso-server/pom.xml
@@ -16,7 +16,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-sso1-client/pom.xml b/sa-token-demo/sa-token-demo-sso1-client/pom.xml
index a1156b39..052101f2 100644
--- a/sa-token-demo/sa-token-demo-sso1-client/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso1-client/pom.xml
@@ -16,7 +16,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-sso2-client/pom.xml b/sa-token-demo/sa-token-demo-sso2-client/pom.xml
index 217ca4e5..fb30c6e0 100644
--- a/sa-token-demo/sa-token-demo-sso2-client/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso2-client/pom.xml
@@ -16,7 +16,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-sso3-client/pom.xml b/sa-token-demo/sa-token-demo-sso3-client/pom.xml
index 582b5619..0bc72d8d 100644
--- a/sa-token-demo/sa-token-demo-sso3-client/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso3-client/pom.xml
@@ -16,7 +16,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-thymeleaf/pom.xml b/sa-token-demo/sa-token-demo-thymeleaf/pom.xml
index 01f25c41..7c9ab1da 100644
--- a/sa-token-demo/sa-token-demo-thymeleaf/pom.xml
+++ b/sa-token-demo/sa-token-demo-thymeleaf/pom.xml
@@ -16,7 +16,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-webflux/pom.xml b/sa-token-demo/sa-token-demo-webflux/pom.xml
index 6761b05e..c1221171 100644
--- a/sa-token-demo/sa-token-demo-webflux/pom.xml
+++ b/sa-token-demo/sa-token-demo-webflux/pom.xml
@@ -16,7 +16,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-websocket-spring/pom.xml b/sa-token-demo/sa-token-demo-websocket-spring/pom.xml
index 79d42352..599c7a66 100644
--- a/sa-token-demo/sa-token-demo-websocket-spring/pom.xml
+++ b/sa-token-demo/sa-token-demo-websocket-spring/pom.xml
@@ -17,7 +17,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-demo/sa-token-demo-websocket/pom.xml b/sa-token-demo/sa-token-demo-websocket/pom.xml
index f6c7c345..e06f9dbc 100644
--- a/sa-token-demo/sa-token-demo-websocket/pom.xml
+++ b/sa-token-demo/sa-token-demo-websocket/pom.xml
@@ -17,7 +17,7 @@
- 1.31.0.RC
+ 1.31.0
diff --git a/sa-token-doc/doc/README.md b/sa-token-doc/doc/README.md
index 01cdd07f..e2ce386c 100644
--- a/sa-token-doc/doc/README.md
+++ b/sa-token-doc/doc/README.md
@@ -1,7 +1,7 @@
-Sa-Token v1.31.0.RC
+Sa-Token v1.31.0
一个轻量级 Java 权限认证框架,让鉴权变得简单、优雅!
diff --git a/sa-token-doc/doc/api/stp-util.md b/sa-token-doc/doc/api/stp-util.md
index 2e7ee315..c3132c4a 100644
--- a/sa-token-doc/doc/api/stp-util.md
+++ b/sa-token-doc/doc/api/stp-util.md
@@ -152,14 +152,34 @@ StpUtil.searchTokenSessionId(keyword, start, size, sortType); // 根据条件
### 11、账号封禁
``` java
-StpUtil.disable(10001, 1200); // 封禁指定账号
-StpUtil.disable(10001); // 指定账号是否已被封禁 (true=已被封禁, false=未被封禁)
-StpUtil.getDisableTime(10001); // 获取指定账号剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁)
-StpUtil.untieDisable(loginId); // 解封指定账号
+StpUtil.disable(10001, 1200); // 封禁:指定账号
+StpUtil.isDisable(10001); // 判断:指定账号是否已被封禁 (true=已被封禁, false=未被封禁)
+StpUtil.checkDisable(10001); // 校验:指定账号是否已被封禁,如果被封禁则抛出异常 `DisableServiceException`
+StpUtil.getDisableTime(10001); // 获取:指定账号剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁)
+StpUtil.untieDisable(loginId); // 解封:指定账号
```
-### 12、身份切换
+### 12、分类封禁
+``` java
+StpUtil.disable(10001, "<业务标识>", 86400); // 封禁:指定账号的指定服务
+StpUtil.isDisable(10001, "<业务标识>"); // 判断:指定账号的指定服务 是否已被封禁 (true=已被封禁, false=未被封禁)
+StpUtil.checkDisable(10001, "<业务标识>"); // 校验:指定账号的指定服务 是否已被封禁,如果被封禁则抛出异常 `DisableServiceException`
+StpUtil.getDisableTime(10001, "<业务标识>"); // 获取:指定账号的指定服务 剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁)
+StpUtil.untieDisable(loginId, "<业务标识>"); // 解封:指定账号的指定服务
+```
+
+
+### 13、阶梯封禁
+``` java
+StpUtil.disableLevel(10001, "comment", 3, 10000); // 分类阶梯封禁,参数:封禁账号、封禁服务、封禁级别、封禁时间
+StpUtil.getDisableLevel(10001, "comment"); // 获取:指定账号的指定服务 封禁的级别 (如果此账号未被封禁则返回 -2)
+StpUtil.isDisableLevel(10001, "comment", 3); // 判断:指定账号的指定服务 是否已被封禁到指定级别,返回 true 或 false
+StpUtil.checkDisableLevel(10001, "comment", 2); // 校验:指定账号的指定服务 是否已被封禁到指定级别(例如 comment服务 已被3级封禁,这里校验是否达到2级),如果已达到此级别,则抛出异常
+```
+
+
+### 14、身份切换
``` java
StpUtil.switchTo(10044); // 临时切换身份为指定账号id
StpUtil.endSwitch(); // 结束临时切换身份
@@ -168,7 +188,7 @@ StpUtil.switchTo(10044, () -> {}); // 在一个代码段里方法内,临时
```
-### 13、二级认证
+### 15、二级认证
``` java
StpUtil.openSafe(safeTime); // 在当前会话 开启二级认证
StpUtil.isSafe(); // 当前会话 是否处于二级认证时间内
diff --git a/sa-token-doc/doc/index-backup.html b/sa-token-doc/doc/index-backup.html
index 0e171bb0..57990a0f 100644
--- a/sa-token-doc/doc/index-backup.html
+++ b/sa-token-doc/doc/index-backup.html
@@ -19,7 +19,7 @@
Sa-Token
-
v1.31.0.RC
+
v1.31.0
@@ -114,7 +114,7 @@