From 54114ebac6381461154758940958bf83cf8256c1 Mon Sep 17 00:00:00 2001
From: click33 <2393584716@qq.com>
Date: Sat, 11 May 2024 15:37:02 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=BC=98=E5=8C=96=E4=B8=80?=
=?UTF-8?q?=E4=B8=8B=20solon=20=E7=9B=B8=E5=85=B3=E9=9B=86=E6=88=90=20demo?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sa-token-demo/sa-token-demo-solon/pom.xml | 2 +-
.../src/main/java/com/pj/SaTokenDemoApp.java | 10 ++
.../src/main/java/com/pj/SysUser.java | 64 +++++++++++
.../java/com/pj/satoken/SaTokenConfigure.java | 18 ++--
.../sa-token-demo-sso-server-solon/pom.xml | 3 +-
.../src/main/java/com/pj/SaSsoServerApp.java | 9 +-
.../src/main/java/com/pj/sso/SsoConfig.java | 7 +-
.../src/main/resources/app.yml | 2 +-
.../src/main/java/com/pj/SaSso1ClientApp.java | 10 ++
.../src/main/resources/app.yml | 8 +-
.../sa-token-demo-sso2-client-solon/pom.xml | 7 ++
.../src/main/java/com/pj/SaConfig.java | 15 +++
.../src/main/java/com/pj/SaSso2ClientApp.java | 11 +-
.../src/main/resources/app.yml | 9 +-
.../src/main/java/com/pj/SaSso3ClientApp.java | 11 +-
.../java/com/pj/sso/SaSsoAutoConfigure.java | 100 +++++++++---------
.../src/main/java/com/pj/sso/SsoConfig.java | 4 +-
.../src/main/resources/app.yml | 15 +--
.../cn/dev33/satoken/solon/XPluginImp.java | 13 ++-
19 files changed, 230 insertions(+), 88 deletions(-)
create mode 100644 sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/SysUser.java
diff --git a/sa-token-demo/sa-token-demo-solon/pom.xml b/sa-token-demo/sa-token-demo-solon/pom.xml
index 075101d1..ecd93e43 100644
--- a/sa-token-demo/sa-token-demo-solon/pom.xml
+++ b/sa-token-demo/sa-token-demo-solon/pom.xml
@@ -40,7 +40,7 @@
sa-token-solon-plugin
${sa-token.version}
-
+
cn.dev33
diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/SaTokenDemoApp.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/SaTokenDemoApp.java
index 8bc72dfa..5d7eefef 100644
--- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/SaTokenDemoApp.java
+++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/SaTokenDemoApp.java
@@ -2,6 +2,8 @@ package com.pj;
import cn.dev33.satoken.SaManager;
+import cn.dev33.satoken.session.SaSession;
+import cn.dev33.satoken.stp.StpUtil;
import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;
@@ -16,5 +18,13 @@ public class SaTokenDemoApp {
public static void main(String[] args) {
Solon.start(SaTokenDemoApp.class, args);
System.out.println("\n启动成功:Sa-Token配置如下:" + SaManager.getConfig());
+
+ SaSession session = StpUtil.getSessionByLoginId(10001);
+ session.set("name", "zhang");
+ session.set("user", new SysUser(10001, "张三"));
+
+ session = StpUtil.getSessionByLoginId(10001);
+ System.out.println(session.get("name"));
+ System.out.println(session.get("user"));
}
}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/SysUser.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/SysUser.java
new file mode 100644
index 00000000..4d564ed5
--- /dev/null
+++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/SysUser.java
@@ -0,0 +1,64 @@
+package com.pj;
+
+/**
+ * @author click33
+ * @since 2024/5/11
+ */
+public class SysUser {
+
+ public int id;
+
+ public String name;
+
+ public SysUser() {
+ }
+ public SysUser(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+
+ /**
+ * 获取
+ *
+ * @return id
+ */
+ public int getId() {
+ return this.id;
+ }
+
+ /**
+ * 设置
+ *
+ * @param id
+ */
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ /**
+ * 获取
+ *
+ * @return name
+ */
+ public String getName() {
+ return this.name;
+ }
+
+ /**
+ * 设置
+ *
+ * @param name
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "SysUser{" +
+ "id=" + id +
+ ", name='" + name + '\'' +
+ '}';
+ }
+}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaTokenConfigure.java
index 1ca07d17..43d278c5 100644
--- a/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaTokenConfigure.java
+++ b/sa-token-demo/sa-token-demo-solon/src/main/java/com/pj/satoken/SaTokenConfigure.java
@@ -1,15 +1,13 @@
package com.pj.satoken;
+import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
import cn.dev33.satoken.solon.integration.SaTokenInterceptor;
+import com.pj.util.AjaxJson;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
-
-import com.pj.util.AjaxJson;
-
-import cn.dev33.satoken.context.SaHolder;
import org.noear.solon.annotation.Inject;
@@ -59,9 +57,11 @@ public class SaTokenConfigure {
;
});
}
-//如果需要 redis dao,加这段代表
-// @Bean
-// public SaTokenDao saTokenDaoInit(@Inject("${sa-token-dao.redis}") SaTokenDaoOfRedis saTokenDao) {
-// return saTokenDao;
-// }
+
+ //如果需要 redis dao,加这段代表
+ @Bean
+ public SaTokenDao saTokenDaoInit(@Inject("${sa-token-dao.redis}") SaTokenDaoOfRedis saTokenDao) {
+ return saTokenDao;
+ }
+
}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/pom.xml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/pom.xml
index b08a1f46..5c7d651c 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/pom.xml
@@ -17,6 +17,7 @@
1.38.0
+ 2.7.0
@@ -48,7 +49,7 @@
sa-token-redisx
${sa-token.version}
-
+
org.noear
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/SaSsoServerApp.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/SaSsoServerApp.java
index 82fae5d6..f10580bc 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/SaSsoServerApp.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/SaSsoServerApp.java
@@ -1,6 +1,7 @@
package com.pj;
+import cn.dev33.satoken.sso.SaSsoManager;
import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;
@@ -9,7 +10,13 @@ public class SaSsoServerApp {
public static void main(String[] args) {
Solon.start(SaSsoServerApp.class, args);
- System.out.println("\n------ Sa-Token-SSO 统一认证中心启动成功 ");
+
+ System.out.println();
+ System.out.println("---------------------- Solon Sa-Token SSO 统一认证中心启动成功 ----------------------");
+ System.out.println("配置信息:" + SaSsoManager.getServerConfig());
+ System.out.println("统一认证登录地址:http://sa-sso-server.com:9000/sso/auth");
+ System.out.println("测试前需要根据官网文档修改hosts文件,测试账号密码:sa / 123456");
+ System.out.println();
}
}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java
index 0094cac4..4d8ed39c 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java
@@ -44,12 +44,13 @@ public class SsoConfig {
return SaResult.error("登录失败!");
};
- // 配置 Http 请求处理器 (在模式三的单点注销功能下用到,如不需要可以注释掉)
+ // 配置 Http 请求处理器
ssoServer.sendHttp = url -> {
try {
- // 发起 http 请求
System.out.println("------ 发起请求:" + url);
- return Forest.get(url).executeAsString();
+ String resStr = Forest.get(url).executeAsString();
+ System.out.println("------ 请求结果:" + resStr);
+ return resStr;
} catch (Exception e) {
e.printStackTrace();
return null;
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/resources/app.yml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/resources/app.yml
index af035ff6..e895bbae 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/resources/app.yml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/resources/app.yml
@@ -29,7 +29,7 @@ sa-token:
sa-token.dao: #名字可以随意取
redis:
server: "localhost:6379"
- password: 123456
+# password: 123456
db: 1
maxTotal: 200
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaSso1ClientApp.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaSso1ClientApp.java
index c3718225..8678b265 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaSso1ClientApp.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/SaSso1ClientApp.java
@@ -1,6 +1,7 @@
package com.pj;
+import cn.dev33.satoken.sso.SaSsoManager;
import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;
@@ -15,6 +16,15 @@ public class SaSso1ClientApp {
public static void main(String[] args) {
Solon.start(SaSso1ClientApp.class, args);
System.out.println("\nSa-Token SSO模式一 Client端启动成功");
+
+ System.out.println();
+ System.out.println("---------------------- Solon Sa-Token SSO 模式一 Client 端启动成功 ----------------------");
+ System.out.println("配置信息:" + SaSsoManager.getClientConfig());
+ System.out.println("测试访问应用端一: http://s1.stp.com:9001");
+ System.out.println("测试访问应用端二: http://s2.stp.com:9001");
+ System.out.println("测试访问应用端三: http://s3.stp.com:9001");
+ System.out.println("测试前需要根据官网文档修改hosts文件,测试账号密码:sa / 123456");
+ System.out.println();
}
}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/resources/app.yml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/resources/app.yml
index b0887401..d2bb8247 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/resources/app.yml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/resources/app.yml
@@ -6,16 +6,14 @@ server:
sa-token:
# SSO-相关配置
sso-client:
- # SSO-Server端-单点登录授权地址
- auth-url: http://sso.stp.com:9000/sso/auth
- # SSO-Server端-单点注销地址
- slo-url: http://sso.stp.com:9000/sso/signout
+ # SSO-Server端 - 主机地址
+ server-url: http://sso.stp.com:9000
# 配置 Sa-Token 单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis)
sa-token.dao: #名字可以随意取
redis:
server: "localhost:6379"
- password: 123456
+# password: 123456
db: 1
maxTotal: 200
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/pom.xml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/pom.xml
index a7dc10c9..66048e33 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/pom.xml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/pom.xml
@@ -47,6 +47,13 @@
sa-token-redisx
${sa-token.version}
+
+
+
+ org.noear
+ forest-solon-plugin
+
+
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaConfig.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaConfig.java
index 6031f505..03b64a33 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaConfig.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaConfig.java
@@ -2,8 +2,11 @@ package com.pj;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
+import cn.dev33.satoken.sso.config.SaSsoClientConfig;
+import com.dtflys.forest.Forest;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
+import org.noear.solon.annotation.Init;
import org.noear.solon.annotation.Inject;
/**
@@ -19,4 +22,16 @@ public class SaConfig {
public SaTokenDao saTokenDaoInit(@Inject("${sa-token.dao.redis}") SaTokenDaoOfRedis saTokenDao) {
return saTokenDao;
}
+
+ @Bean
+ public void configSso(SaSsoClientConfig ssoClient) {
+ // 配置Http请求处理器
+ ssoClient.sendHttp = url -> {
+ System.out.println("------ 发起请求:" + url);
+ String resStr = Forest.get(url).executeAsString();
+ System.out.println("------ 请求结果:" + resStr);
+ return resStr;
+ };
+ }
+
}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaSso2ClientApp.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaSso2ClientApp.java
index 8e04700f..a0ac5dfd 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaSso2ClientApp.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/SaSso2ClientApp.java
@@ -1,6 +1,7 @@
package com.pj;
+import cn.dev33.satoken.sso.SaSsoManager;
import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;
@@ -9,7 +10,15 @@ public class SaSso2ClientApp {
public static void main(String[] args) {
Solon.start(SaSso2ClientApp.class, args);
- System.out.println("\nSa-Token SSO模式二 Client端启动成功");
+
+ System.out.println();
+ System.out.println("---------------------- Solon Sa-Token SSO 模式二 Client 端启动成功 ----------------------");
+ System.out.println("配置信息:" + SaSsoManager.getClientConfig());
+ System.out.println("测试访问应用端一: http://sa-sso-client1.com:9002");
+ System.out.println("测试访问应用端二: http://sa-sso-client2.com:9002");
+ System.out.println("测试访问应用端三: http://sa-sso-client3.com:9002");
+ System.out.println("测试前需要根据官网文档修改hosts文件,测试账号密码:sa / 123456");
+ System.out.println();
}
}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/resources/app.yml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/resources/app.yml
index d509817c..33875b88 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/resources/app.yml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/resources/app.yml
@@ -6,17 +6,20 @@ server:
sa-token:
# SSO-相关配置
sso-client:
- # SSO-Server端 统一认证地址
- auth-url: http://sa-sso-server.com:9000/sso/auth
+ # SSO-Server端 主机地址
+ server-url: http://sa-sso-server.com:9000
# auth-url: http://127.0.0.1:8848/sa-token-demo-sso-server-h5/sso-auth.html
# 是否打开单点注销接口
is-slo: true
+ sign:
+ # API 接口调用秘钥
+ secret-key: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
# 配置 Sa-Token 单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis)
sa-token.dao: #名字可以随意取
redis:
server: "localhost:6379"
- password: 123456
+# password: 123456
db: 1
maxTotal: 200
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/SaSso3ClientApp.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/SaSso3ClientApp.java
index f30e4a25..4f72b3e7 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/SaSso3ClientApp.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/SaSso3ClientApp.java
@@ -1,5 +1,6 @@
package com.pj;
+import cn.dev33.satoken.sso.SaSsoManager;
import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;
@@ -8,7 +9,15 @@ public class SaSso3ClientApp {
public static void main(String[] args) {
Solon.start(SaSso3ClientApp.class, args);
- System.out.println("\nSa-Token SSO模式三 Client端启动成功");
+
+ System.out.println();
+ System.out.println("---------------------- Sa-Token SSO 模式三 Client 端启动成功 ----------------------");
+ System.out.println("配置信息:" + SaSsoManager.getClientConfig());
+ System.out.println("测试访问应用端一: http://sa-sso-client1.com:9003");
+ System.out.println("测试访问应用端二: http://sa-sso-client2.com:9003");
+ System.out.println("测试访问应用端三: http://sa-sso-client3.com:9003");
+ System.out.println("测试前需要根据官网文档修改hosts文件,测试账号密码:sa / 123456");
+ System.out.println();
}
}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SaSsoAutoConfigure.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SaSsoAutoConfigure.java
index 2d625b4e..f7795635 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SaSsoAutoConfigure.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SaSsoAutoConfigure.java
@@ -1,50 +1,50 @@
-package com.pj.sso;
-
-import cn.dev33.satoken.sso.SaSsoManager;
-import cn.dev33.satoken.sso.config.SaSsoClientConfig;
-import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
-import cn.dev33.satoken.sso.template.SaSsoClientTemplate;
-import org.noear.solon.annotation.Bean;
-import org.noear.solon.annotation.Condition;
-import org.noear.solon.annotation.Configuration;
-import org.noear.solon.annotation.Inject;
-
-/**
- * solon 的 sso 适配,在 cn.dev33:sa-token-solon-plugin:1.34.0 里还没有。(临时加这个类)
- *
- * //todo: 如果使用 org.noear:sa-token-solon-plugin:xxx ,则需要删掉这个类
- *
- * @author noear
- * @since 2.0
- */
-@Condition(onClass = SaSsoManager.class)
-@Configuration
-public class SaSsoAutoConfigure {
- /**
- * 获取 SSO 配置Bean
- * */
- @Bean
- public SaSsoClientConfig getConfig(@Inject(value = "${sa-token.sso-client}",required = false) SaSsoClientConfig ssoConfig) {
- return ssoConfig;
- }
-
- /**
- * 注入 Sa-Token-SSO 配置Bean
- *
- * @param saSsoConfig 配置对象
- */
- @Bean
- public void setSaSsoConfig(@Inject(required = false) SaSsoClientConfig saSsoConfig) {
- SaSsoManager.setClientConfig(saSsoConfig);
- }
-
- /**
- * 注入 Sa-Token-SSO 单点登录模块 Bean
- *
- * @param ssoClientTemplate ssoClientTemplate对象
- */
- @Bean
- public void setSaSsoClientTemplate(@Inject(required = false) SaSsoClientTemplate ssoClientTemplate) {
- SaSsoClientProcessor.instance.ssoClientTemplate = ssoClientTemplate;
- }
-}
+//package com.pj.sso;
+//
+//import cn.dev33.satoken.sso.SaSsoManager;
+//import cn.dev33.satoken.sso.config.SaSsoClientConfig;
+//import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
+//import cn.dev33.satoken.sso.template.SaSsoClientTemplate;
+//import org.noear.solon.annotation.Bean;
+//import org.noear.solon.annotation.Condition;
+//import org.noear.solon.annotation.Configuration;
+//import org.noear.solon.annotation.Inject;
+//
+///**
+// * solon 的 sso 适配,在 cn.dev33:sa-token-solon-plugin:1.34.0 里还没有。(临时加这个类)
+// *
+// * //todo: 如果使用 org.noear:sa-token-solon-plugin:xxx ,则需要删掉这个类
+// *
+// * @author noear
+// * @since 2.0
+// */
+//@Condition(onClass = SaSsoManager.class)
+//@Configuration
+//public class SaSsoAutoConfigure {
+// /**
+// * 获取 SSO 配置Bean
+// * */
+// @Bean
+// public SaSsoClientConfig getConfig(@Inject(value = "${sa-token.sso-client}",required = false) SaSsoClientConfig ssoConfig) {
+// return ssoConfig;
+// }
+//
+// /**
+// * 注入 Sa-Token-SSO 配置Bean
+// *
+// * @param saSsoConfig 配置对象
+// */
+// @Bean
+// public void setSaSsoConfig(@Inject(required = false) SaSsoClientConfig saSsoConfig) {
+// SaSsoManager.setClientConfig(saSsoConfig);
+// }
+//
+// /**
+// * 注入 Sa-Token-SSO 单点登录模块 Bean
+// *
+// * @param ssoClientTemplate ssoClientTemplate对象
+// */
+// @Bean
+// public void setSaSsoClientTemplate(@Inject(required = false) SaSsoClientTemplate ssoClientTemplate) {
+// SaSsoClientProcessor.instance.ssoClientTemplate = ssoClientTemplate;
+// }
+//}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoConfig.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoConfig.java
index bb8a0a85..1f656d62 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoConfig.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoConfig.java
@@ -16,7 +16,9 @@ public class SsoConfig {
// 配置Http请求处理器
ssoClient.sendHttp = url -> {
System.out.println("------ 发起请求:" + url);
- return Forest.get(url).executeAsString();
+ String resStr = Forest.get(url).executeAsString();
+ System.out.println("------ 请求结果:" + resStr);
+ return resStr;
};
}
}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/resources/app.yml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/resources/app.yml
index b64d298c..7bfeb9d3 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/resources/app.yml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/resources/app.yml
@@ -6,27 +6,22 @@ server:
sa-token:
# SSO-相关配置
sso-client:
- # SSO-Server端 统一认证地址
- auth-url: http://sa-sso-server.com:9000/sso/auth
+ # SSO-Server端 主机地址
+ server-url: http://sa-sso-server.com:9000
# 使用Http请求校验ticket
is-http: true
- # SSO-Server端 ticket校验地址
- check-ticket-url: http://sa-sso-server.com:9000/sso/checkTicket
# 打开单点注销功能
is-slo: true
- # 单点注销地址
- slo-url: http://sa-sso-server.com:9000/sso/signout
+ sign:
# 接口调用秘钥
- secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
- # SSO-Server端 查询userinfo地址
- userinfo-url: http://sa-sso-server.com:9000/sso/userinfo
+ secret-key: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
# 配置 Sa-Token Dao(此处与SSO-Server端连接不同的Redis)
sa-token.dao: #名字可以随意取
redis:
server: "localhost:6379"
- password: 123456
+# password: 123456
db: 2
maxTotal: 200
diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/XPluginImp.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/XPluginImp.java
index 1f8dc60d..4cd41f73 100644
--- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/XPluginImp.java
+++ b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/XPluginImp.java
@@ -21,12 +21,15 @@ import cn.dev33.satoken.httpauth.basic.SaHttpBasicUtil;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.context.second.SaTokenSecondContextCreator;
import cn.dev33.satoken.dao.SaTokenDao;
+import cn.dev33.satoken.httpauth.digest.SaHttpDigestTemplate;
+import cn.dev33.satoken.httpauth.digest.SaHttpDigestUtil;
import cn.dev33.satoken.json.SaJsonTemplate;
import cn.dev33.satoken.listener.SaTokenEventCenter;
import cn.dev33.satoken.listener.SaTokenListener;
import cn.dev33.satoken.log.SaLog;
import cn.dev33.satoken.same.SaSameTemplate;
import cn.dev33.satoken.sign.SaSignTemplate;
+import cn.dev33.satoken.solon.json.SaJsonTemplateForSnack3;
import cn.dev33.satoken.solon.model.SaContextForSolon;
import cn.dev33.satoken.solon.oauth2.SaOAuth2AutoConfigure;
import cn.dev33.satoken.solon.sso.SaSsoAutoConfigure;
@@ -64,6 +67,9 @@ public class XPluginImp implements Plugin {
// 注入上下文Bean
SaManager.setSaTokenContext(new SaContextForSolon());
+ // 注入JSON解析器Bean
+ SaManager.setSaJsonTemplate(new SaJsonTemplateForSnack3());
+
//注入配置Bean
SaTokenConfig saTokenConfig = Solon.cfg().getBean("sa-token", SaTokenConfig.class);
if (saTokenConfig != null) {
@@ -89,7 +95,6 @@ public class XPluginImp implements Plugin {
SaTokenEventCenter.registerListener(sl);
});
-
// 注入权限认证 Bean
context.getBeanAsync(StpInterface.class, bean -> {
SaManager.setStpInterface(bean);
@@ -115,6 +120,11 @@ public class XPluginImp implements Plugin {
SaHttpBasicUtil.saHttpBasicTemplate = bean;
});
+ // Sa-Token Http Digest 认证模块 Bean
+ context.getBeanAsync(SaHttpDigestTemplate.class, bean -> {
+ SaHttpDigestUtil.saHttpDigestTemplate = bean;
+ });
+
// Sa-Token JSON 转换器 Bean
context.getBeanAsync(SaJsonTemplate.class, bean -> {
SaManager.setSaJsonTemplate(bean);
@@ -129,5 +139,6 @@ public class XPluginImp implements Plugin {
context.getBeanAsync(StpLogic.class, bean -> {
StpUtil.setStpLogic(bean);
});
+
}
}
\ No newline at end of file