From 1eddae5e1e380ca9926f84e6b2e475190a133ba5 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Sat, 20 Aug 2022 08:56:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=8D=95=E7=82=B9=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=A8=A1=E5=9D=97=20ssoLogoutCall=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9=E6=97=A0=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/dev33/satoken/sso/SaSsoHandle.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoHandle.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoHandle.java index 4ad7ebf9..e59e2e08 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoHandle.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoHandle.java @@ -361,10 +361,22 @@ public class SaSsoHandle { // --------- 两种模式 if(cfg.getIsHttp()) { - // 模式三:使用 http 请求从认证中心校验ticket + // q1、使用模式三:使用 http 请求从认证中心校验ticket + + // 计算当前 sso-client 的单点注销回调地址 String ssoLogoutCall = null; - if(cfg.getIsSlo() && SaFoxUtil.isNotEmpty(currUri)) { - ssoLogoutCall = SaHolder.getRequest().getUrl().replace(currUri, Api.ssoLogoutCall); + if(cfg.getIsSlo()) { + // 如果配置了回调地址,就使用配置的值: + if(SaFoxUtil.isNotEmpty(cfg.getSsoLogoutCall())) { + ssoLogoutCall = cfg.getSsoLogoutCall(); + } + // 如果提供了当前 uri,则根据此值来计算: + else if(SaFoxUtil.isNotEmpty(currUri)) { + ssoLogoutCall = SaHolder.getRequest().getUrl().replace(currUri, Api.ssoLogoutCall); + } + // 否则视为不注册单点注销回调地址 + else { + } } // 发起请求 @@ -379,7 +391,7 @@ public class SaSsoHandle { throw new SaSsoException(result.getMsg()).setCode(SaSsoExceptionCode.CODE_20005); } } else { - // 模式二:直连Redis校验ticket + // q2、使用模式二:直连Redis校验ticket return SaSsoUtil.checkTicket(ticket); } }