From bd313849fc664ddc1ea9b6d7864830aea3afafcc Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Sat, 27 Apr 2024 17:36:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=20SaSsoConfig=20=E4=B8=AD=E4=B8=8D?= =?UTF-8?q?=E5=BF=85=E8=A6=81=E7=9A=84=20get=20set=20=E6=A0=87=E6=B3=A8?= =?UTF-8?q?=E4=B8=BA=E8=BF=87=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/pj/sso/SsoConfig.java | 12 +++---- .../src/main/java/com/pj/sso/SsoConfig.java | 4 +-- .../java/com/pj/sso/SsoServerController.java | 12 +++---- .../java/com/pj/sso/SsoClientController.java | 4 +-- sa-token-doc/sso/sso-server.md | 12 +++---- sa-token-doc/sso/sso-type3.md | 4 +-- .../cn/dev33/satoken/config/SaSsoConfig.java | 32 +++++++++++++++---- .../cn/dev33/satoken/sso/SaSsoProcessor.java | 8 ++--- .../cn/dev33/satoken/sso/SaSsoTemplate.java | 6 ++-- 9 files changed, 56 insertions(+), 38 deletions(-) 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 13691d7d..1dacf1f1 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 @@ -30,22 +30,22 @@ public class SsoConfig { public void configSso(SaSsoConfig sso) { //SaSsoConfig 已自动构建 // 配置:未登录时返回的View - sso.setNotLoginView(() -> { + sso.notLoginView = () -> { return new ModelAndView("sa-login.html"); - }); + }; // 配置:登录处理函数 - sso.setDoLoginHandle((name, pwd) -> { + sso.doLoginHandle = (name, pwd) -> { // 此处仅做模拟登录,真实环境应该查询数据进行登录 if("sa".equals(name) && "123456".equals(pwd)) { StpUtil.login(10001); return SaResult.ok("登录成功!").setData(StpUtil.getTokenValue()); } return SaResult.error("登录失败!"); - }); + }; // 配置 Http 请求处理器 (在模式三的单点注销功能下用到,如不需要可以注释掉) - sso.setSendHttp(url -> { + sso.sendHttp = url -> { try { // 发起 http 请求 System.out.println("------ 发起请求:" + url); @@ -54,6 +54,6 @@ public class SsoConfig { e.printStackTrace(); return null; } - }); + }; } } 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 d4a33b03..4669b38b 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 @@ -14,9 +14,9 @@ public class SsoConfig { @Bean private void configSso(SaSsoConfig sso) { // 配置Http请求处理器 - sso.setSendHttp(url -> { + sso.sendHttp = url -> { System.out.println("------ 发起请求:" + url); return Forest.get(url).executeAsString(); - }); + }; } } diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java index c1fb3013..ca8973c4 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java @@ -37,22 +37,22 @@ public class SsoServerController { private void configSso(SaSsoConfig sso) { // 配置:未登录时返回的View - sso.setNotLoginView(() -> { + sso.notLoginView = () -> { return new ModelAndView("sa-login.html"); - }); + }; // 配置:登录处理函数 - sso.setDoLoginHandle((name, pwd) -> { + sso.doLoginHandle = (name, pwd) -> { // 此处仅做模拟登录,真实环境应该查询数据进行登录 if("sa".equals(name) && "123456".equals(pwd)) { StpUtil.login(10001); return SaResult.ok("登录成功!").setData(StpUtil.getTokenValue()); } return SaResult.error("登录失败!"); - }); + }; // 配置 Http 请求处理器 (在模式三的单点注销功能下用到,如不需要可以注释掉) - sso.setSendHttp(url -> { + sso.sendHttp = url -> { try { // 发起 http 请求 System.out.println("------ 发起请求:" + url); @@ -61,7 +61,7 @@ public class SsoServerController { e.printStackTrace(); return null; } - }); + }; } // 示例:获取数据接口(用于在模式三下,为 client 端开放拉取数据的接口) diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java index 0945a73d..a873a998 100644 --- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java +++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java @@ -46,10 +46,10 @@ public class SsoClientController { @Autowired private void configSso(SaSsoConfig sso) { // 配置Http请求处理器 - sso.setSendHttp(url -> { + sso.sendHttp = url -> { System.out.println("------ 发起请求:" + url); return Forest.get(url).executeAsString(); - }); + }; } // 查询我的账号信息 diff --git a/sa-token-doc/sso/sso-server.md b/sa-token-doc/sso/sso-server.md index fd585fde..b87084ab 100644 --- a/sa-token-doc/sso/sso-server.md +++ b/sa-token-doc/sso/sso-server.md @@ -104,25 +104,25 @@ public class SsoServerController { @Autowired private void configSso(SaSsoConfig sso) { // 配置:未登录时返回的View - sso.setNotLoginView(() -> { + sso.notLoginView = () -> { String msg = "当前会话在SSO-Server端尚未登录,请先访问" + " doLogin登录 " + "进行登录之后,刷新页面开始授权"; return msg; - }); + }; // 配置:登录处理函数 - sso.setDoLoginHandle((name, pwd) -> { + sso.doLoginHandle = (name, pwd) -> { // 此处仅做模拟登录,真实环境应该查询数据进行登录 if("sa".equals(name) && "123456".equals(pwd)) { StpUtil.login(10001); return SaResult.ok("登录成功!").setData(StpUtil.getTokenValue()); } return SaResult.error("登录失败!"); - }); + }; // 配置 Http 请求处理器 (在模式三的单点注销功能下用到,如不需要可以注释掉) - sso.setSendHttp(url -> { + sso.sendHttp = url -> { try { // 发起 http 请求 System.out.println("------ 发起请求:" + url); @@ -131,7 +131,7 @@ public class SsoServerController { e.printStackTrace(); return null; } - }); + }; } } diff --git a/sa-token-doc/sso/sso-type3.md b/sa-token-doc/sso/sso-type3.md index 4667dd3b..c339424f 100644 --- a/sa-token-doc/sso/sso-type3.md +++ b/sa-token-doc/sso/sso-type3.md @@ -51,10 +51,10 @@ private void configSso(SaSsoConfig sso) { // ... 其他代码 // 配置 Http 请求处理器 - sso.setSendHttp(url -> { + sso.sendHttp = url -> { System.out.println("------ 发起请求:" + url); return Forest.get(url).executeAsString(); - }); + }; } ``` diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java index acc38410..bb93dc71 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java @@ -434,14 +434,14 @@ public class SaSsoConfig implements Serializable { /** - * SSO-Server端:未登录时返回的View + * SSO-Server端:未登录时返回的View */ public Supplier notLoginView = () -> { return "当前会话在SSO-Server认证中心尚未登录(当前未配置登录视图)"; }; /** - * SSO-Server端:登录函数 + * SSO-Server端:登录函数 */ public BiFunction doLoginHandle = (name, pwd) -> { return SaResult.error(); @@ -450,78 +450,96 @@ public class SaSsoConfig implements Serializable { /** * SSO-Client端:自定义校验Ticket返回值的处理逻辑 (每次从认证中心获取校验Ticket的结果后调用) *

参数:loginId, back - *

返回值:返回给前端的值 + *

返回值:返回给前端的值 */ public BiFunction ticketResultHandle = null; /** - * SSO-Client端:发送Http请求的处理函数 + * SSO-Client端:发送Http请求的处理函数 */ public Function sendHttp = url -> { throw new SaSsoException("请配置 Http 请求处理器").setCode(SaSsoErrorCode.CODE_30010); }; + // -------------------- 废弃方法 -------------------- + /** + *

属性为 public,请直接访问

* @param notLoginView SSO-Server端:未登录时返回的View * @return 对象自身 */ + @Deprecated public SaSsoConfig setNotLoginView(Supplier notLoginView) { this.notLoginView = notLoginView; return this; } /** + *

属性为 public,请直接访问

* @return 函数 SSO-Server端:未登录时返回的View */ + @Deprecated public Supplier getNotLoginView() { return notLoginView; } /** - * @param doLoginHandle SSO-Server端:登录函数 + *

属性为 public,请直接访问

+ * @param doLoginHandle SSO-Server端:登录函数 * @return 对象自身 */ + @Deprecated public SaSsoConfig setDoLoginHandle(BiFunction doLoginHandle) { this.doLoginHandle = doLoginHandle; return this; } /** + *

属性为 public,请直接访问

* @return 函数 SSO-Server端:登录函数 */ + @Deprecated public BiFunction getDoLoginHandle() { return doLoginHandle; } /** + *

属性为 public,请直接访问

* @param ticketResultHandle SSO-Client端:自定义校验Ticket返回值的处理逻辑 (每次从认证中心获取校验Ticket的结果后调用) * @return 对象自身 */ + @Deprecated public SaSsoConfig setTicketResultHandle(BiFunction ticketResultHandle) { this.ticketResultHandle = ticketResultHandle; return this; } /** + *

属性为 public,请直接访问

* @return 函数 SSO-Client端:自定义校验Ticket返回值的处理逻辑 (每次从认证中心获取校验Ticket的结果后调用) */ + @Deprecated public BiFunction getTicketResultHandle() { return ticketResultHandle; } /** - * @param sendHttp SSO-Client端:发送Http请求的处理函数 - * @return 对象自身 + *

属性为 public,请直接访问

+ * @param sendHttp SSO-Client端:发送Http请求的处理函数 + * @return 对象自身 */ + @Deprecated public SaSsoConfig setSendHttp(Function sendHttp) { this.sendHttp = sendHttp; return this; } /** + *

属性为 public,请直接访问

* @return 函数 SSO-Client端:发送Http请求的处理函数 */ + @Deprecated public Function getSendHttp() { return sendHttp; } diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoProcessor.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoProcessor.java index cd276637..f4c54eea 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoProcessor.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoProcessor.java @@ -95,7 +95,7 @@ public class SaSsoProcessor { // ---------- 此处有两种情况分开处理: // ---- 情况1:在SSO认证中心尚未登录,需要先去登录 if( ! stpLogic.isLogin()) { - return cfg.getNotLoginView().get(); + return cfg.notLoginView.get(); } // ---- 情况2:在SSO认证中心已经登录,需要重定向回 Client 端,而这又分为两种方式: String mode = req.getParam(paramName.mode, ""); @@ -123,7 +123,7 @@ public class SaSsoProcessor { ParamName paramName = ssoTemplate.paramName; // 处理 - return cfg.getDoLoginHandle().apply(req.getParam(paramName.name), req.getParam(paramName.pwd)); + return cfg.doLoginHandle.apply(req.getParam(paramName.name), req.getParam(paramName.pwd)); } /** @@ -297,8 +297,8 @@ public class SaSsoProcessor { Object loginId = checkTicket(ticket, apiName.ssoLogin); // Be: 如果开发者自定义了处理逻辑 - if(cfg.getTicketResultHandle() != null) { - return cfg.getTicketResultHandle().apply(loginId, back); + if(cfg.ticketResultHandle != null) { + return cfg.ticketResultHandle.apply(loginId, back); } // ------- 2、如果 loginId 无值,说明 ticket 无效 diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java index 4ee27e98..495986ea 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java @@ -350,7 +350,7 @@ public class SaSsoTemplate { Set urlSet = session.get(SaSsoConsts.SLO_CALLBACK_SET_KEY, HashSet::new); for (String url : urlSet) { url = joinLoginIdAndSign(url, loginId); - cfg.getSendHttp().apply(url); + cfg.sendHttp.apply(url); } // step.2 Server端注销 @@ -375,7 +375,7 @@ public class SaSsoTemplate { */ public Object getData(String path, Map paramMap) { String url = buildCustomPathUrl(path, paramMap); - return SaSsoManager.getConfig().getSendHttp().apply(url); + return SaSsoManager.getConfig().sendHttp.apply(url); } @@ -547,7 +547,7 @@ public class SaSsoTemplate { * @return 返回的结果 */ public SaResult request(String url) { - String body = SaSsoManager.getConfig().getSendHttp().apply(url); + String body = SaSsoManager.getConfig().sendHttp.apply(url); Map map = SaManager.getSaJsonTemplate().parseJsonToMap(body); return new SaResult(map); }