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 bb93dc71..d3b6638a 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 @@ -117,6 +117,11 @@ public class SaSsoConfig implements Serializable { */ public String sloUrl = "/sso/signout"; + /** + * 配置当前 Client 端的登录地址(为空时自动获取) + */ + public String currSsoLogin; + /** * 配置当前 Client 端的单点注销回调URL (为空时自动获取) */ @@ -311,14 +316,30 @@ public class SaSsoConfig implements Serializable { } /** - * @return 配置当前 Client 端的单点注销回调URL (为空时自动获取) + * @return 配置当前 Client 端的登录地址(为空时自动获取) + */ + public String getCurrSsoLogin() { + return currSsoLogin; + } + + /** + * @param currSsoLogin 配置当前 Client 端的登录地址(为空时自动获取) + * @return 对象自身 + */ + public SaSsoConfig setCurrSsoLogin(String currSsoLogin) { + this.currSsoLogin = currSsoLogin; + return this; + } + + /** + * @return 配置当前 Client 端的单点注销回调URL (为空时自动获取) */ public String getSsoLogoutCall() { return ssoLogoutCall; } /** - * @param ssoLogoutCall 配置当前 Client 端的单点注销回调URL (为空时自动获取) + * @param ssoLogoutCall 配置当前 Client 端的单点注销回调URL (为空时自动获取) * @return 对象自身 */ public SaSsoConfig setSsoLogoutCall(String ssoLogoutCall) { @@ -374,7 +395,8 @@ public class SaSsoConfig implements Serializable { + ", checkTicketUrl=" + checkTicketUrl + ", getDataUrl=" + getDataUrl + ", userinfoUrl=" + userinfoUrl - + ", sloUrl=" + sloUrl + + ", sloUrl=" + sloUrl + + ", currSsoLogin=" + currSsoLogin + ", ssoLogoutCall=" + ssoLogoutCall + ", serverUrl=" + serverUrl + ", isCheckSign=" + isCheckSign 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 f4c54eea..5d5a826d 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 @@ -290,7 +290,16 @@ public class SaSsoProcessor { * 情况2:ticket有值,说明此请求从SSO认证中心重定向而来,需要根据ticket进行登录 */ if(ticket == null) { - String serverAuthUrl = ssoTemplate.buildServerAuthUrl(SaHolder.getRequest().getUrl(), back); + // 获取当前项目的 sso 登录地址 + // 全局配置了就是用全局的,否则使用当前请求的地址 + String currSsoLoginUrl; + if(SaFoxUtil.isNotEmpty(cfg.getCurrSsoLogin())) { + currSsoLoginUrl = cfg.getCurrSsoLogin(); + } else { + currSsoLoginUrl = SaHolder.getRequest().getUrl(); + } + // 构建url + String serverAuthUrl = ssoTemplate.buildServerAuthUrl(currSsoLoginUrl, back); return res.redirect(serverAuthUrl); } else { // ------- 1、校验ticket,获取 loginId