From 078119e12cce9055b5b9586439c6970d19765373 Mon Sep 17 00:00:00 2001 From: shengzhang <2393584716@qq.com> Date: Thu, 15 Apr 2021 19:10:47 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=9A=E5=85=A8=E5=B1=80?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E5=99=A8=E6=89=A7=E8=A1=8C=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E6=94=BE=E5=88=B0=E6=88=90=E5=91=98=E5=8F=98=E9=87=8F=E9=87=8C?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/dev33/satoken/SaTokenManager.java | 40 ----------------- .../SaFilterErrorStrategyDefaultImpl.java | 21 --------- .../filter/SaFilterStrategyDefaultImpl.java | 19 -------- .../java/com/pj/satoken/SaTokenConfigure.java | 15 ++++++- .../java/com/pj/satoken/SaTokenConfigure.java | 4 +- sa-token-doc/index.css | 4 +- sa-token-doc/index.html | 3 ++ .../reactor/filter/SaReactorFilter.java | 43 +++++++++++++++++-- .../spring/SaTokenSpringAutowired.java | 22 ---------- .../dev33/satoken/filter/SaServletFilter.java | 41 ++++++++++++++++-- .../spring/SaTokenSpringAutowired.java | 22 ---------- 11 files changed, 99 insertions(+), 135 deletions(-) delete mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterErrorStrategyDefaultImpl.java delete mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterStrategyDefaultImpl.java diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/SaTokenManager.java b/sa-token-core/src/main/java/cn/dev33/satoken/SaTokenManager.java index bfff2ed0..07d72c1c 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/SaTokenManager.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/SaTokenManager.java @@ -11,10 +11,6 @@ import cn.dev33.satoken.context.SaTokenContext; import cn.dev33.satoken.context.SaTokenContextDefaultImpl; import cn.dev33.satoken.dao.SaTokenDao; import cn.dev33.satoken.dao.SaTokenDaoDefaultImpl; -import cn.dev33.satoken.filter.SaFilterErrorStrategy; -import cn.dev33.satoken.filter.SaFilterErrorStrategyDefaultImpl; -import cn.dev33.satoken.filter.SaFilterStrategy; -import cn.dev33.satoken.filter.SaFilterStrategyDefaultImpl; import cn.dev33.satoken.stp.StpInterface; import cn.dev33.satoken.stp.StpInterfaceDefaultImpl; import cn.dev33.satoken.stp.StpLogic; @@ -128,42 +124,6 @@ public class SaTokenManager { return saTokenContext; } - /** - * 全局过滤器-认证策略 Bean - */ - private static SaFilterStrategy strategy; - public static void setSaFilterStrategy(SaFilterStrategy strategy) { - SaTokenManager.strategy = strategy; - } - public static SaFilterStrategy getSaFilterStrategy() { - if (strategy == null) { - synchronized (SaTokenManager.class) { - if (strategy == null) { - setSaFilterStrategy(new SaFilterStrategyDefaultImpl()); - } - } - } - return strategy; - } - - /** - * 全局过滤器-异常处理策略 Bean - */ - private static SaFilterErrorStrategy errorStrategy; - public static void setSaFilterErrorStrategy(SaFilterErrorStrategy errorStrategy) { - SaTokenManager.errorStrategy = errorStrategy; - } - public static SaFilterErrorStrategy getSaFilterErrorStrategy() { - if (errorStrategy == null) { - synchronized (SaTokenManager.class) { - if (errorStrategy == null) { - setSaFilterErrorStrategy(new SaFilterErrorStrategyDefaultImpl()); - } - } - } - return errorStrategy; - } - /** * StpLogic集合, 记录框架所有成功初始化的StpLogic */ diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterErrorStrategyDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterErrorStrategyDefaultImpl.java deleted file mode 100644 index 930b3b48..00000000 --- a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterErrorStrategyDefaultImpl.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.dev33.satoken.filter; - -import cn.dev33.satoken.exception.SaTokenException; - -/** - * sa-token全局过滤器-异常处理策略 [默认实现] - * - * @author kong - * - */ -public class SaFilterErrorStrategyDefaultImpl implements SaFilterErrorStrategy { - - /** - * 执行方法 - */ - @Override - public Object run(Throwable e) { - throw new SaTokenException(e); - } - -} diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterStrategyDefaultImpl.java b/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterStrategyDefaultImpl.java deleted file mode 100644 index 9fa23782..00000000 --- a/sa-token-core/src/main/java/cn/dev33/satoken/filter/SaFilterStrategyDefaultImpl.java +++ /dev/null @@ -1,19 +0,0 @@ -package cn.dev33.satoken.filter; - -/** - * sa-token全局过滤器-认证策略 [默认实现] - * - * @author kong - * - */ -public class SaFilterStrategyDefaultImpl implements SaFilterStrategy { - - /** - * 执行验证的方法 - */ - @Override - public void run(Object r) { - // default no action - } - -} diff --git a/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenConfigure.java index cad6876e..d1ae867f 100644 --- a/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo-springboot/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -30,8 +30,21 @@ public class SaTokenConfigure implements WebMvcConfigurer { // @Bean // public SaServletFilter getSaReactorFilter() { // return new SaServletFilter() +// // 指定 [拦截路由] // .addInclude("/**") -// .addExclude("/favicon.ico"); +// // 指定 [放行路由] +// .addExclude("/favicon.ico") +// // 指定[认证函数]: 每次请求执行 +// .setAuth(r -> { +// System.out.println("---------- sa全局认证"); +// SaRouterUtil.match("/test/test", () -> StpUtil.checkLogin()); +// }) +// // 指定[异常处理函数]:每次[认证函数]发生异常时执行此函数 +// .setError(e -> { +// System.out.println("---------- sa全局异常 "); +// return AjaxJson.getError(e.getMessage()); +// }) +// ; // } } diff --git a/sa-token-demo-webflux/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo-webflux/src/main/java/com/pj/satoken/SaTokenConfigure.java index eb2cbdf8..d829098a 100644 --- a/sa-token-demo-webflux/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo-webflux/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -6,7 +6,7 @@ import org.springframework.context.annotation.Configuration; import com.pj.util.AjaxJson; import cn.dev33.satoken.filter.SaFilterErrorStrategy; -import cn.dev33.satoken.filter.SaFilterStrategy; +import cn.dev33.satoken.filter.SaFilterAuthStrategy; import cn.dev33.satoken.reactor.filter.SaReactorFilter; import cn.dev33.satoken.router.SaRouterUtil; import cn.dev33.satoken.stp.StpUtil; @@ -33,7 +33,7 @@ public class SaTokenConfigure { * 注册 [sa-token全局过滤器-认证策略] */ @Bean - public SaFilterStrategy getSaFilterStrategy() { + public SaFilterAuthStrategy getSaFilterStrategy() { return r -> { System.out.println("---------- 进入sa-token全局过滤器 -----------"); SaRouterUtil.match("/test/test333", () -> StpUtil.checkLogin()); diff --git a/sa-token-doc/index.css b/sa-token-doc/index.css index d7878251..13fbad77 100644 --- a/sa-token-doc/index.css +++ b/sa-token-doc/index.css @@ -59,12 +59,12 @@ body{font-size: 16px; color: #34495E; font-family: "Source Sans Pro","Helvetica 100%{box-shadow: 0 0 20px #FFF;} } /* 微信二维码 */ -.wx-qr-box{margin-top: 50px; margin-bottom: 20px;} +.wx-qr-box{margin-top: 50px;} .qr-item{display: inline-block;} .qr-item p{font-size: 12px; padding: 0 0.5em;} /* .qr-item a{color: #42B983;} */ .wx-qr{width: 150px;} -.wx-qr-box p{margin-top: 10px; color: #666;} +.wx-qr-box p{margin-top: 10px; color: #666; margin-bottom: 20px;} .wx-qr,.dro-qr{cursor: pointer;} /* -------- 支持特性 --------- */ diff --git a/sa-token-doc/index.html b/sa-token-doc/index.html index 6eb2f534..5028a601 100644 --- a/sa-token-doc/index.html +++ b/sa-token-doc/index.html @@ -204,6 +204,9 @@ + + +

diff --git a/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java b/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java index 17adc3c8..99ed50c9 100644 --- a/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java +++ b/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/filter/SaReactorFilter.java @@ -9,7 +9,9 @@ import org.springframework.web.server.ServerWebExchange; import org.springframework.web.server.WebFilter; import org.springframework.web.server.WebFilterChain; -import cn.dev33.satoken.SaTokenManager; +import cn.dev33.satoken.exception.SaTokenException; +import cn.dev33.satoken.filter.SaFilterAuthStrategy; +import cn.dev33.satoken.filter.SaFilterErrorStrategy; import cn.dev33.satoken.reactor.context.SaReactorHolder; import cn.dev33.satoken.reactor.context.SaReactorSyncHolder; import cn.dev33.satoken.router.SaRouterUtil; @@ -92,6 +94,41 @@ public class SaReactorFilter implements WebFilter { return excludeList; } + + // ------------------------ 执行函数 + + /** + * 认证函数:每次请求执行 + */ + public SaFilterAuthStrategy auth = r -> {}; + + /** + * 异常处理函数:每次[认证函数]发生异常时执行此函数 + */ + public SaFilterErrorStrategy error = e -> { + throw new SaTokenException(e); + }; + + /** + * 写入[认证函数]: 每次请求执行 + * @param auth see note + * @return 对象自身 + */ + public SaReactorFilter setAuth(SaFilterAuthStrategy auth) { + this.auth = auth; + return this; + } + + /** + * 写入[异常处理函数]:每次[认证函数]发生异常时执行此函数 + * @param error see note + * @return 对象自身 + */ + public SaReactorFilter setError(SaFilterErrorStrategy error) { + this.error = error; + return this; + } + // ------------------------ filter @@ -103,11 +140,11 @@ public class SaReactorFilter implements WebFilter { SaReactorSyncHolder.setContent(exchange); // 执行全局过滤器 - SaRouterUtil.match(includeList, excludeList, () -> SaTokenManager.getSaFilterStrategy().run(null)); + SaRouterUtil.match(includeList, excludeList, () -> auth.run(null)); } catch (Throwable e) { // 1. 获取异常处理策略结果 - Object result = SaTokenManager.getSaFilterErrorStrategy().run(e); + Object result = error.run(e); String resultString = String.valueOf(result); // 2. 写入输出流 diff --git a/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenSpringAutowired.java b/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenSpringAutowired.java index 9e31d9f6..eaae7218 100644 --- a/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenSpringAutowired.java +++ b/sa-token-reactor-spring-boot-starter/src/main/java/cn/dev33/satoken/reactor/spring/SaTokenSpringAutowired.java @@ -12,8 +12,6 @@ import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.context.SaTokenContext; import cn.dev33.satoken.context.SaTokenContextForThreadLocal; import cn.dev33.satoken.dao.SaTokenDao; -import cn.dev33.satoken.filter.SaFilterErrorStrategy; -import cn.dev33.satoken.filter.SaFilterStrategy; import cn.dev33.satoken.stp.StpInterface; /** @@ -104,26 +102,6 @@ public class SaTokenSpringAutowired { SaTokenManager.setSaTokenContext(saTokenContext); } - /** - * 注入[sa-token全局过滤器-认证策略] - * - * @param strategy see note - */ - @Autowired(required = false) - public void setSaFilterStrategy(SaFilterStrategy strategy) { - SaTokenManager.setSaFilterStrategy(strategy); - } - - /** - * 注入[sa-token全局过滤器-异常处理策略] - * - * @param errorStrategy see note - */ - @Autowired(required = false) - public void setSaFilterErrorStrategy(SaFilterErrorStrategy errorStrategy) { - SaTokenManager.setSaFilterErrorStrategy(errorStrategy); - } - /** * 利用自动匹配特性,获取SpringMVC框架内部使用的路由匹配器 * diff --git a/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java b/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java index 1743088f..f10fab89 100644 --- a/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java +++ b/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/filter/SaServletFilter.java @@ -14,7 +14,7 @@ import javax.servlet.ServletResponse; import org.springframework.core.annotation.Order; -import cn.dev33.satoken.SaTokenManager; +import cn.dev33.satoken.exception.SaTokenException; import cn.dev33.satoken.router.SaRouterUtil; import cn.dev33.satoken.util.SaTokenConsts; @@ -94,6 +94,41 @@ public class SaServletFilter implements Filter { return excludeList; } + + // ------------------------ 执行函数 + + /** + * 认证函数:每次请求执行 + */ + public SaFilterAuthStrategy auth = r -> {}; + + /** + * 异常处理函数:每次[认证函数]发生异常时执行此函数 + */ + public SaFilterErrorStrategy error = e -> { + throw new SaTokenException(e); + }; + + /** + * 写入[认证函数]: 每次请求执行 + * @param auth see note + * @return 对象自身 + */ + public SaServletFilter setAuth(SaFilterAuthStrategy auth) { + this.auth = auth; + return this; + } + + /** + * 写入[异常处理函数]:每次[认证函数]发生异常时执行此函数 + * @param error see note + * @return 对象自身 + */ + public SaServletFilter setError(SaFilterErrorStrategy error) { + this.error = error; + return this; + } + // ------------------------ doFilter @@ -103,11 +138,11 @@ public class SaServletFilter implements Filter { try { // 执行全局过滤器 - SaRouterUtil.match(includeList, excludeList, () -> SaTokenManager.getSaFilterStrategy().run(null)); + SaRouterUtil.match(includeList, excludeList, () -> auth.run(null)); } catch (Throwable e) { // 1. 获取异常处理策略结果 - Object result = SaTokenManager.getSaFilterErrorStrategy().run(e); + Object result = error.run(e); String resultString = String.valueOf(result); // 2. 写入输出流 diff --git a/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenSpringAutowired.java b/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenSpringAutowired.java index 657fa794..bafef81e 100644 --- a/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenSpringAutowired.java +++ b/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/spring/SaTokenSpringAutowired.java @@ -11,8 +11,6 @@ import cn.dev33.satoken.action.SaTokenAction; import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.context.SaTokenContext; import cn.dev33.satoken.dao.SaTokenDao; -import cn.dev33.satoken.filter.SaFilterErrorStrategy; -import cn.dev33.satoken.filter.SaFilterStrategy; import cn.dev33.satoken.stp.StpInterface; /** @@ -95,26 +93,6 @@ public class SaTokenSpringAutowired { SaTokenManager.setSaTokenContext(saTokenContext); } - /** - * 注入[sa-token全局过滤器-认证策略] - * - * @param strategy see note - */ - @Autowired(required = false) - public void setSaFilterStrategy(SaFilterStrategy strategy) { - SaTokenManager.setSaFilterStrategy(strategy); - } - - /** - * 注入[sa-token全局过滤器-异常处理策略] - * - * @param errorStrategy see note - */ - @Autowired(required = false) - public void setSaFilterErrorStrategy(SaFilterErrorStrategy errorStrategy) { - SaTokenManager.setSaFilterErrorStrategy(errorStrategy); - } - /** * 利用自动匹配特性,获取SpringMVC框架内部使用的路由匹配器 *