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框架内部使用的路由匹配器 *