diff --git a/README.md b/README.md
index f64dc4c5..8baa5332 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
-sa-token v1.15.0
+sa-token v1.15.0.RELEASE
这可能是史上功能最全的Java权限认证框架!
-
+
diff --git a/pom.xml b/pom.xml
index 261a6ec4..3dfa30c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
cn.dev33
sa-token-parent
pom
- 1.15.0
+ 1.15.0.RELEASE
sa-token
@@ -23,7 +23,7 @@
sa-token-dao-redis
sa-token-dao-redis-jackson
sa-token-spring-aop
- sa-token-oauth2
+
@@ -38,7 +38,7 @@
- 1.15.0
+ 1.15.0.RELEASE
1.8
utf-8
utf-8
diff --git a/sa-token-core/pom.xml b/sa-token-core/pom.xml
index c225eba8..c352e653 100644
--- a/sa-token-core/pom.xml
+++ b/sa-token-core/pom.xml
@@ -7,7 +7,7 @@
cn.dev33
sa-token-parent
- 1.15.0
+ 1.15.0.RELEASE
jar
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/SaTokenManager.java b/sa-token-core/src/main/java/cn/dev33/satoken/SaTokenManager.java
index 4b2562ef..834e37f8 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/SaTokenManager.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/SaTokenManager.java
@@ -136,8 +136,10 @@ public class SaTokenManager {
public static SaTokenServlet getSaTokenServlet() {
if (saTokenServlet == null) {
// 如果对象为空,则使用框架默认方式初始化
- if (saTokenServlet == null) {
- setSaTokenServlet(new SaTokenServletDefaultImpl());
+ synchronized (SaTokenManager.class) {
+ if (saTokenServlet == null) {
+ setSaTokenServlet(new SaTokenServletDefaultImpl());
+ }
}
}
return saTokenServlet;
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java
index c973ce66..4f307ecf 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/action/SaTokenActionDefaultImpl.java
@@ -43,7 +43,7 @@ public class SaTokenActionDefaultImpl implements SaTokenAction {
return SaTokenInsideUtil.getRandomString(128);
}
// tik风格 (2_14_16)
- if(SaTokenConsts.TOKEN_STYLE_RANDOM_TIK.equals(tokenStyle)) {
+ if(SaTokenConsts.TOKEN_STYLE_TIK.equals(tokenStyle)) {
return SaTokenInsideUtil.getRandomString(2) + "_" + SaTokenInsideUtil.getRandomString(14) + "_" + SaTokenInsideUtil.getRandomString(16) + "__";
}
// 默认,还是uuid
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaSecureUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaSecureUtil.java
index 3b95f5ba..b0fe67ae 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaSecureUtil.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/secure/SaSecureUtil.java
@@ -439,5 +439,4 @@ public class SaSecureUtil {
}
-
}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSession.java b/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSession.java
index 52964941..16bc8ae3 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSession.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSession.java
@@ -426,6 +426,16 @@ public class SaSession implements Serializable {
public boolean has(String key) {
return !valueIsNull(get(key));
}
+
+ /**
+ * 删值
+ * @param key 要删除的key
+ */
+ public void delete(String key) {
+ dataMap.remove(key);
+ update();
+ }
+
// --------- 工具方法
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 1f6ba0d7..f7082643 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
@@ -13,7 +13,7 @@ public class SaTokenConsts {
/**
* sa-token 版本号
*/
- public static final String VERSION_NO = "v1.15.0";
+ public static final String VERSION_NO = "v1.15.0.RELEASE";
/**
* sa-token 开源地址
@@ -74,7 +74,7 @@ public class SaTokenConsts {
/**
* token风格: tik风格 (2_14_16)
*/
- public static final String TOKEN_STYLE_RANDOM_TIK = "tik";
+ public static final String TOKEN_STYLE_TIK = "tik";
// =================== 其它 ===================
diff --git a/sa-token-dao-redis-jackson/pom.xml b/sa-token-dao-redis-jackson/pom.xml
index 403b6e2c..32268302 100644
--- a/sa-token-dao-redis-jackson/pom.xml
+++ b/sa-token-dao-redis-jackson/pom.xml
@@ -7,7 +7,7 @@
cn.dev33
sa-token-parent
- 1.15.0
+ 1.15.0.RELEASE
jar
diff --git a/sa-token-dao-redis/pom.xml b/sa-token-dao-redis/pom.xml
index ba28f0c3..7d61a534 100644
--- a/sa-token-dao-redis/pom.xml
+++ b/sa-token-dao-redis/pom.xml
@@ -7,7 +7,7 @@
cn.dev33
sa-token-parent
- 1.15.0
+ 1.15.0.RELEASE
jar
diff --git a/sa-token-demo-jwt/pom.xml b/sa-token-demo-jwt/pom.xml
index 665d5a0b..42691e93 100644
--- a/sa-token-demo-jwt/pom.xml
+++ b/sa-token-demo-jwt/pom.xml
@@ -16,7 +16,7 @@
- 1.15.0
+ 1.15.0.RELEASE
diff --git a/sa-token-demo-oauth2/sa-token-demo-oauth2-client/pom.xml b/sa-token-demo-oauth2/sa-token-demo-oauth2-client/pom.xml
index 7295782e..77963e74 100644
--- a/sa-token-demo-oauth2/sa-token-demo-oauth2-client/pom.xml
+++ b/sa-token-demo-oauth2/sa-token-demo-oauth2-client/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.15.0
+ 1.15.0.RELEASE
diff --git a/sa-token-demo-oauth2/sa-token-demo-oauth2-server/pom.xml b/sa-token-demo-oauth2/sa-token-demo-oauth2-server/pom.xml
index f88cda08..a8f54ab6 100644
--- a/sa-token-demo-oauth2/sa-token-demo-oauth2-server/pom.xml
+++ b/sa-token-demo-oauth2/sa-token-demo-oauth2-server/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.15.0
+ 1.15.0.RELEASE
diff --git a/sa-token-demo-springboot/pom.xml b/sa-token-demo-springboot/pom.xml
index f59669e0..ae2e8046 100644
--- a/sa-token-demo-springboot/pom.xml
+++ b/sa-token-demo-springboot/pom.xml
@@ -16,7 +16,7 @@
- 1.15.0
+ 1.15.0.RELEASE
diff --git a/sa-token-doc/doc/README.md b/sa-token-doc/doc/README.md
index 291e361c..4a2f27a5 100644
--- a/sa-token-doc/doc/README.md
+++ b/sa-token-doc/doc/README.md
@@ -1,11 +1,11 @@
-sa-token v1.15.0
+sa-token v1.15.0.RELEASE
这可能是史上功能最全的Java权限认证框架!
-
+
diff --git a/sa-token-doc/doc/index.html b/sa-token-doc/doc/index.html
index 4f36385a..9682278f 100644
--- a/sa-token-doc/doc/index.html
+++ b/sa-token-doc/doc/index.html
@@ -44,7 +44,7 @@