diff --git a/sa-token-doc/doc/README.md b/sa-token-doc/doc/README.md index b9225ef2..d54abb2f 100644 --- a/sa-token-doc/doc/README.md +++ b/sa-token-doc/doc/README.md @@ -134,8 +134,7 @@ StpUtil.switchTo(10044); // 将当前会话身份临时切换为其它账号 ## 交流群 -QQ交流群:1群:1002350610 (已满) 、 -2群:614714762 [点击加入](https://jq.qq.com/?_wv=1027&k=b759RZrL) +QQ交流群:496757342 [点击加入](https://jq.qq.com/?_wv=1027&k=WNggbsFe) 微信交流群: diff --git a/sa-token-doc/doc/index-backup.html b/sa-token-doc/doc/index-backup.html index a5c27047..041c7074 100644 --- a/sa-token-doc/doc/index-backup.html +++ b/sa-token-doc/doc/index-backup.html @@ -151,7 +151,7 @@ } - + diff --git a/sa-token-doc/doc/index.html b/sa-token-doc/doc/index.html index 4281a962..1b299916 100644 --- a/sa-token-doc/doc/index.html +++ b/sa-token-doc/doc/index.html @@ -152,7 +152,7 @@ } - + diff --git a/sa-token-doc/doc/lib/docsify-copy-code.min.js b/sa-token-doc/doc/lib/docsify-copy-code.min.js new file mode 100644 index 00000000..d48cab49 --- /dev/null +++ b/sa-token-doc/doc/lib/docsify-copy-code.min.js @@ -0,0 +1,9 @@ +/*! + * docsify-copy-code + * v2.1.0 + * https://github.com/jperasmus/docsify-copy-code + * (c) 2017-2019 JP Erasmus + * MIT license + */ +!function(){"use strict";function r(o){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o})(o)}!function(o,e){void 0===e&&(e={});var t=e.insertAt;if(o&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===t&&n.firstChild?n.insertBefore(c,n.firstChild):n.appendChild(c),c.styleSheet?c.styleSheet.cssText=o:c.appendChild(document.createTextNode(o))}}(".docsify-copy-code-button,.docsify-copy-code-button span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{position:absolute;z-index:1;top:0;right:0;overflow:visible;padding:.65em .8em;border:0;border-radius:0;outline:0;font-size:1em;background:grey;background:var(--theme-color,grey);color:#fff;opacity:0}.docsify-copy-code-button span{border-radius:3px;background:inherit;pointer-events:none}.docsify-copy-code-button .error,.docsify-copy-code-button .success{position:absolute;z-index:-100;top:50%;left:0;padding:.5em .65em;font-size:.825em;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.docsify-copy-code-button.error .error,.docsify-copy-code-button.success .success{opacity:1;-webkit-transform:translate(-115%,-50%);transform:translate(-115%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}"),document.querySelector('link[href*="docsify-copy-code"]')&&console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."),window.DocsifyCopyCodePlugin={init:function(){return function(o,e){o.ready(function(){console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.")})}}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(o,s){o.doneEach(function(){var o=Array.apply(null,document.querySelectorAll("pre[data-lang]")),c={buttonText:"Copy to clipboard",errorText:"Error",successText:"Copied"};s.config.copyCode&&Object.keys(c).forEach(function(t){var n=s.config.copyCode[t];"string"==typeof n?c[t]=n:"object"===r(n)&&Object.keys(n).some(function(o){var e=-1',''.concat(c.buttonText,""),''.concat(c.errorText,""),''.concat(c.successText,""),""].join("");o.forEach(function(o){o.insertAdjacentHTML("beforeend",e)})}),o.mounted(function(){document.querySelector(".content").addEventListener("click",function(o){if(o.target.classList.contains("docsify-copy-code-button")){var e="BUTTON"===o.target.tagName?o.target:o.target.parentNode,t=document.createRange(),n=e.parentNode.querySelector("code"),c=window.getSelection();t.selectNode(n),c.removeAllRanges(),c.addRange(t);try{document.execCommand("copy")&&(e.classList.add("success"),setTimeout(function(){e.classList.remove("success")},1e3))}catch(o){console.error("docsify-copy-code: ".concat(o)),e.classList.add("error"),setTimeout(function(){e.classList.remove("error")},1e3)}"function"==typeof(c=window.getSelection()).removeRange?c.removeRange(t):"function"==typeof c.removeAllRanges&&c.removeAllRanges()}})})}].concat(window.$docsify.plugins||[])}(); +//# sourceMappingURL2=docsify-copy-code.min.js.map \ No newline at end of file diff --git a/sa-token-doc/doc/lib/docsify-plugin.js b/sa-token-doc/doc/lib/docsify-plugin.js index 9a386f66..8e4c0e8a 100644 --- a/sa-token-doc/doc/lib/docsify-plugin.js +++ b/sa-token-doc/doc/lib/docsify-plugin.js @@ -27,7 +27,7 @@ var myDocsifyPlugin = function(hook, vm) { '' ].join(''); return html + footer; diff --git a/sa-token-doc/doc/lib/docsify-tabs.min.js b/sa-token-doc/doc/lib/docsify-tabs.min.js index ee3e2f07..8c9328ac 100644 --- a/sa-token-doc/doc/lib/docsify-tabs.min.js +++ b/sa-token-doc/doc/lib/docsify-tabs.min.js @@ -6,4 +6,4 @@ * MIT license */ !function(){"use strict";!function(t,a){void 0===a&&(a={});var o=a.insertAt;if(t&&"undefined"!=typeof document){var c=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css","top"===o&&c.firstChild?c.insertBefore(e,c.firstChild):c.appendChild(e),e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}}(':root{--docsifytabs-border-color:#ededed;--docsifytabs-border-px:1px;--docsifytabs-margin:1.5em 0;--docsifytabs-tab-background:#f8f8f8;--docsifytabs-tab-background--active:var(--docsifytabs-content-background);--docsifytabs-tab-color:#999;--docsifytabs-tab-color--active:inherit;--docsifytabs-tab-highlight-px:3px;--docsifytabs-tab-highlight-color:var(--theme-color,currentColor);--docsifytabs-tab-padding:0.6em 1em;--docsifytabs-content-background:inherit;--docsifytabs-content-padding:1.5rem}.docsify-tabs:before,.docsify-tabs__tab{z-index:1}.docsify-tabs__tab--active,.docsify-tabs__tab:focus{z-index:2}.docsify-tabs{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative}.docsify-tabs:before{content:"";-ms-flex-order:0;order:0;-ms-flex:1;flex:1 1}.docsify-tabs__tab{-ms-flex-order:-1;order:-1;position:relative;margin:0;font-size:inherit;appearance:none}.docsify-tabs__content{visibility:hidden;position:absolute;overflow:hidden;height:0;width:100%}.docsify-tabs__content :first-child{margin-top:0}.docsify-tabs__content :first-child~:last-child,.docsify-tabs__content :last-child{margin-bottom:0}.docsify-tabs__tab--active+.docsify-tabs__content{visibility:visible;position:relative;overflow:auto;height:auto}[class*=docsify-tabs--]{margin:1.5em 0;margin:var(--docsifytabs-margin)}[class*=docsify-tabs--] .docsify-tabs__tab{padding:.6em 1em;padding:var(--docsifytabs-tab-padding);background:#f8f8f8;background:var(--docsifytabs-tab-background);color:#999;color:var(--docsifytabs-tab-color)}[class*=docsify-tabs--] .docsify-tabs__tab--active{background:inherit;background:var(--docsifytabs-tab-background--active);color:inherit;color:var(--docsifytabs-tab-color--active)}[class*=docsify-tabs--] .docsify-tabs__content{padding:1.5rem;padding:var(--docsifytabs-content-padding);background:inherit;background:var(--docsifytabs-content-background)}.docsify-tabs--classic .docsify-tabs__content,.docsify-tabs--classic .docsify-tabs__tab,.docsify-tabs--classic:before{border-width:1px;border-color:#ededed;border:var(--docsifytabs-border-px) solid var(--docsifytabs-border-color)}.docsify-tabs--classic:before{margin-right:1px;margin-right:var(--docsifytabs-border-px);border-top-width:0;border-left-width:0;border-right-width:0}.docsify-tabs--classic .docsify-tabs__tab:first-of-type{border-top-left-radius:var(--docsifytabs-border-radius-px)}.docsify-tabs--classic .docsify-tabs__tab:last-of-type{border-top-right-radius:var(--docsifytabs-border-radius-px)}.docsify-tabs--classic .docsify-tabs__tab~.docsify-tabs__tab{margin-left:-1px;margin-left:calc(0px - var(--docsifytabs-border-px))}.docsify-tabs--classic .docsify-tabs__tab--active{border-bottom-width:0;box-shadow:inset 0 3px 0 0 var(--theme-color,currentColor);box-shadow:inset 0 var(--docsifytabs-tab-highlight-px) 0 0 var(--docsifytabs-tab-highlight-color)}.docsify-tabs--classic .docsify-tabs__content{margin-top:-1px;margin-top:calc(0px - var(--docsifytabs-border-px));border-top:0;border-radius:0;border-radius:0 var(--docsifytabs-border-radius-px) var(--docsifytabs-border-radius-px) var(--docsifytabs-border-radius-px)}.docsify-tabs--material .docsify-tabs__tab{margin-bottom:2px;margin-bottom:calc(var(--docsifytabs-tab-highlight-px) - var(--docsifytabs-border-px));background:transparent;border:0}.docsify-tabs--material .docsify-tabs__tab--active{box-shadow:0 3px 0 0 var(--theme-color,currentColor);box-shadow:0 var(--docsifytabs-tab-highlight-px) 0 0 var(--docsifytabs-tab-highlight-color);background:transparent}.docsify-tabs--material .docsify-tabs__content{border-width:1px 0;border-color:#ededed;border-left:0 solid var(--docsifytabs-border-color);border-bottom:var(--docsifytabs-border-px) solid var(--docsifytabs-border-color);border-right:0 solid var(--docsifytabs-border-color);border-top:var(--docsifytabs-border-px) solid var(--docsifytabs-border-color)}',{insertAt:"top"});var u="tabs:replace",y={tabsContainer:"content",tabBlock:"docsify-tabs",tabButton:"docsify-tabs__tab",tabButtonActive:"docsify-tabs__tab--active",tabContent:"docsify-tabs__content"},p={codeMarkup:/(```[\s\S]*?```)/gm,commentReplaceMarkup:new RegExp("\x3c!-- ".concat(u," (.*) --\x3e")),tabBlockMarkup:/[\r\n]*(\s*)()[\r\n]+([\s|\S]*?)[\r\n\s]+()/m,tabCommentMarkup:/[\r\n]*(\s*)[\r\n]+([\s\S]*?)[\r\n]*\s*(?=)/m},m={persist:!0,sync:!0,theme:"classic",tabComments:!0,tabHeadings:!0};function g(t,a){var o=1 --\x3e'),a="\n".concat(s,"\x3c!-- ").concat(u," --\x3e");for(var i=function(){var t=(f[2]||"[Tab]").trim(),a=(f[3]||"").trim();o=o.replace(f[0],function(){return["\n".concat(s,"\x3c!-- ").concat(u,' --\x3e"),"\n".concat(s,"\x3c!-- ").concat(u,'
--\x3e'),"\n\n".concat(s).concat(a),"\n\n".concat(s,"\x3c!-- ").concat(u,"
--\x3e")].join("")})};null!==(f=(m.tabComments?p.tabCommentMarkup.exec(o):null)||(m.tabHeadings?p.tabHeadingMarkup.exec(o):null));)i()}o=(o=o.replace(r,function(){return t})).replace(n,function(){return a}),d=d.replace(b[0],function(){return o})};null!==(b=p.tabBlockMarkup.exec(d));)a();return t.forEach(function(t,a){d=d.replace(t,function(){return o[a]})}),d}(t)),t}),t.afterEach(function(t,a){o&&(t=function(o){for(var c,t=function(){var t=c[0],a=c[1]||"";o=o.replace(t,function(){return a})};null!==(c=p.commentReplaceMarkup.exec(o));)t();return o}(t)),a(t)}),t.doneEach(function(){var t,a,c,e;o&&(t=document.querySelector(".".concat(y.tabsContainer)),a=t?Array.apply(null,t.querySelectorAll(".".concat(y.tabBlock))):[],c=JSON.parse(sessionStorage.getItem(window.location.href))||{},e=JSON.parse(sessionStorage.getItem("*"))||[],s(),a.forEach(function(a,t){var o=a.querySelector(".".concat(y.tabButtonActive));o||(m.sync&&e.length&&(o=e.map(function(t){return a.querySelector(".".concat(y.tabButton,'[data-tab="').concat(t,'"]'))}).filter(function(t){return t})[0]),!o&&m.persist&&(o=a.querySelector(".".concat(y.tabButton,'[data-tab="').concat(c[t],'"]'))),(o=o||a.querySelector(".".concat(y.tabButton)))&&o.classList.add(y.tabButtonActive))}))}),t.mounted(function(){var t=document.querySelector(".".concat(y.tabsContainer));t&&t.addEventListener("click",function(t){g(t.target)}),window.addEventListener("hashchange",s,!1)})},window.$docsify.plugins||[])))}(); -//# sourceMappingURL=docsify-tabs.min.js.map \ No newline at end of file +//# sourceMappingURL2=docsify-tabs.min.js.map \ No newline at end of file diff --git a/sa-token-doc/doc/sso/sso-custom-api.md b/sa-token-doc/doc/sso/sso-custom-api.md index 184f71bb..c5649fe6 100644 --- a/sa-token-doc/doc/sso/sso-custom-api.md +++ b/sa-token-doc/doc/sso/sso-custom-api.md @@ -32,13 +32,13 @@ public class SsoServerController { ``` java // 配置SSO相关参数 @Autowired -private void configSso(SaTokenConfig cfg) { +private void configSso(SaSsoConfig sso) { // 自定义API地址 SaSsoConsts.Api.ssoAuth = "/sso/auth2"; // ... // SSO 相关配置 - cfg.sso.setXxx ... ; + sso.setXxx ... ; } ``` diff --git a/sa-token-doc/doc/sso/sso-custom-login.md b/sa-token-doc/doc/sso/sso-custom-login.md index 5905c488..5d103dd3 100644 --- a/sa-token-doc/doc/sso/sso-custom-login.md +++ b/sa-token-doc/doc/sso/sso-custom-login.md @@ -81,7 +81,7 @@ if(res.code == 401) { ``` java // 配置:未登录时返回的View -cfg.sso.setNotLoginView(() -> { +sso.setNotLoginView(() -> { return new ModelAndView("xxx.html"); }) ``` diff --git a/sa-token-doc/doc/sso/sso-server.md b/sa-token-doc/doc/sso/sso-server.md index c7cb77fe..b0a91c64 100644 --- a/sa-token-doc/doc/sso/sso-server.md +++ b/sa-token-doc/doc/sso/sso-server.md @@ -79,9 +79,9 @@ public class SsoServerController { * 配置SSO相关参数 */ @Autowired - private void configSso(SaTokenConfig cfg) { + private void configSso(SaSsoConfig sso) { // 配置:未登录时返回的View - cfg.sso.setNotLoginView(() -> { + sso.setNotLoginView(() -> { String msg = "当前会话在SSO-Server端尚未登录,请先访问" + " doLogin登录 " + "进行登录之后,刷新页面开始授权"; @@ -89,7 +89,7 @@ public class SsoServerController { }); // 配置:登录处理函数 - cfg.sso.setDoLoginHandle((name, pwd) -> { + sso.setDoLoginHandle((name, pwd) -> { // 此处仅做模拟登录,真实环境应该查询数据进行登录 if("sa".equals(name) && "123456".equals(pwd)) { StpUtil.login(10001); @@ -99,7 +99,7 @@ public class SsoServerController { }); // 配置 Http 请求处理器 (在模式三的单点注销功能下用到,如不需要可以注释掉) - cfg.sso.setSendHttp(url -> { + sso.setSendHttp(url -> { try { // 发起 http 请求 System.out.println("发起请求:" + url); diff --git a/sa-token-doc/doc/sso/sso-type1.md b/sa-token-doc/doc/sso/sso-type1.md index 5f860191..b70348d8 100644 --- a/sa-token-doc/doc/sso/sso-type1.md +++ b/sa-token-doc/doc/sso/sso-type1.md @@ -109,8 +109,8 @@ public class SsoClientController { // SSO-Client端:首页 @RequestMapping("/") public String index() { - String authUrl = SaManager.getConfig().getSso().getAuthUrl(); - String solUrl = SaManager.getConfig().getSso().getSloUrl(); + String authUrl = SaSsoManager.getConfig().getAuthUrl(); + String solUrl = SaSsoManager.getConfig().getSloUrl(); String str = "

Sa-Token SSO-Client 应用端

" + "

当前会话是否登录:" + StpUtil.isLogin() + "

" + "

登录 " + diff --git a/sa-token-doc/doc/sso/sso-type3.md b/sa-token-doc/doc/sso/sso-type3.md index 6fdf31ae..4ebf827b 100644 --- a/sa-token-doc/doc/sso/sso-type3.md +++ b/sa-token-doc/doc/sso/sso-type3.md @@ -36,11 +36,11 @@ ``` java // 配置SSO相关参数 @Autowired -private void configSso(SaTokenConfig cfg) { +private void configSso(SaSsoConfig sso) { // ... 其他代码 // 配置 Http 请求处理器 - cfg.sso.setSendHttp(url -> { + sso.setSendHttp(url -> { System.out.println("发起请求:" + url); return OkHttps.sync(url).get().getBody().toString(); }); diff --git a/sa-token-doc/doc/up/global-filter.md b/sa-token-doc/doc/up/global-filter.md index 1b5b6d6b..35da50bb 100644 --- a/sa-token-doc/doc/up/global-filter.md +++ b/sa-token-doc/doc/up/global-filter.md @@ -79,6 +79,17 @@ public class SaTokenConfigure { - 由于过滤器中抛出的异常不进入全局异常处理,所以你必须提供`[异常处理函数]`来处理`[认证函数]`里抛出的异常 - 在`[异常处理函数]`里的返回值,将作为字符串输出到前端,如果需要定制化返回数据,请注意其中的格式转换 +改写 `setError` 函数的响应格式示例: +``` java +.setError(e -> { + // 设置响应头 + SaHolder.getResponse().setHeader("Content-Type", "application/json;charset=UTF-8"); + // 使用封装的 JSON 工具类转换数据格式 + return JSONUtil.toJsonStr( SaResult.error(e.getMessage()) ); +}) +``` +JSON 工具类可参考:[Hutool-Json](https://hutool.cn/docs/#/json/JSONUtil) + ### 在 WebFlux 中注册过滤器 `Spring WebFlux`中不提供拦截器机制,因此若你的项目需要路由鉴权功能,过滤器是你唯一的选择,在`Spring WebFlux`注册过滤器的流程与上述流程几乎完全一致, diff --git a/sa-token-doc/index.html b/sa-token-doc/index.html index 62caab5f..5ec5726a 100644 --- a/sa-token-doc/index.html +++ b/sa-token-doc/index.html @@ -87,8 +87,8 @@

- -

QQ交流群: 614714762 点击加入

+ +

QQ交流群: 496757342 点击加入

@@ -318,7 +318,7 @@

联系我们