From 228c709d41351a9c010bc1bb18438ee46e478592 Mon Sep 17 00:00:00 2001 From: noear Date: Sun, 15 Jan 2023 11:45:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=20sa-token=20=E6=8B=A6?= =?UTF-8?q?=E6=88=AA=E9=80=82=E9=85=8D=E7=9A=84=E5=A4=84=E7=90=86=E9=A1=BA?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solon/integration/SaTokenFilter.java | 40 +++++++++++-------- .../solon/integration/SaTokenInterceptor.java | 40 +++++++++++-------- .../integration/SaTokenPathInterceptor.java | 38 +++++++++++------- 3 files changed, 72 insertions(+), 46 deletions(-) diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenFilter.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenFilter.java index 5ca220d1..927ed822 100644 --- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenFilter.java +++ b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenFilter.java @@ -173,25 +173,17 @@ public class SaTokenFilter implements Filter { //之所以改名,为了跟 SaT Handler mainHandler = Solon.app().router().matchMain(ctx); Action action = (mainHandler instanceof Action ? (Action) mainHandler : null); - //1.路径规则处理(包括了静态文件) + //先路径过滤下(包括了静态文件) SaRouter.match(includeList).notMatch(excludeList).check(r -> { - beforeAuth.run(mainHandler); + //1.执行前置处理(主要是一些跨域之类的) + if(beforeAuth != null) { + beforeAuth.run(mainHandler); + } + //2.执行注解处理 + authAnno(action); + //3.执行规则处理 auth.run(mainHandler); }); - - //2.验证注解处理 - if (isAnnotation && action != null) { - // 获取此请求对应的 Method 处理函数 - Method method = action.method().getMethod(); - - // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 - if (SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { - return; - } - - // 注解校验 - SaStrategy.me.checkMethodAnnotation.accept(method); - } } catch (StopMatchException e) { } catch (SaTokenException e) { @@ -213,4 +205,20 @@ public class SaTokenFilter implements Filter { //之所以改名,为了跟 SaT chain.doFilter(ctx); } + + private void authAnno(Action action) { + //2.验证注解处理 + if (isAnnotation && action != null) { + // 获取此请求对应的 Method 处理函数 + Method method = action.method().getMethod(); + + // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 + if (SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { + return; + } + + // 注解校验 + SaStrategy.me.checkMethodAnnotation.accept(method); + } + } } diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenInterceptor.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenInterceptor.java index 959586ad..7008f9c0 100644 --- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenInterceptor.java +++ b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenInterceptor.java @@ -172,26 +172,18 @@ public class SaTokenInterceptor implements RouterInterceptor { try { Action action = (mainHandler instanceof Action ? (Action) mainHandler : null); - //1.路径规则处理 + //先路径过滤下(包括了静态文件) SaRouter.match(includeList).notMatch(excludeList).check(r -> { - beforeAuth.run(mainHandler); + //1.执行前置处理(主要是一些跨域之类的) + if(beforeAuth != null) { + beforeAuth.run(mainHandler); + } + //2.执行注解处理 + authAnno(action); + //3.执行规则处理 auth.run(mainHandler); }); - //2.验证注解处理 - if (isAnnotation && action != null) { - // 获取此请求对应的 Method 处理函数 - Method method = action.method().getMethod(); - - // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 - if (SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { - return; - } - - // 注解校验 - SaStrategy.me.checkMethodAnnotation.accept(method); - } - } catch (StopMatchException e) { } catch (SaTokenException e) { @@ -213,4 +205,20 @@ public class SaTokenInterceptor implements RouterInterceptor { chain.doIntercept(ctx, mainHandler); } + + private void authAnno(Action action) { + //2.验证注解处理 + if (isAnnotation && action != null) { + // 获取此请求对应的 Method 处理函数 + Method method = action.method().getMethod(); + + // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 + if (SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { + return; + } + + // 注解校验 + SaStrategy.me.checkMethodAnnotation.accept(method); + } + } } diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenPathInterceptor.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenPathInterceptor.java index 32ab24a1..edc172e2 100644 --- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenPathInterceptor.java +++ b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/integration/SaTokenPathInterceptor.java @@ -173,23 +173,17 @@ public class SaTokenPathInterceptor implements Handler { //1.路径规则处理 SaRouter.match(includeList).notMatch(excludeList).check(r -> { - beforeAuth.run(action); + //1.执行前置处理(主要是一些跨域之类的) + if(beforeAuth != null) { + beforeAuth.run(action); + } + //2.执行注解处理 + authAnno(action); + //3.执行规则处理 auth.run(action); }); - //2.验证注解处理 - if(isAnnotation && action != null){ - // 获取此请求对应的 Method 处理函数 - Method method = action.method().getMethod(); - // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 - if(SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { - return; - } - - // 注解校验 - SaStrategy.me.checkMethodAnnotation.accept(method); - } } catch (StopMatchException e) { } catch (SaTokenException e) { @@ -202,10 +196,26 @@ public class SaTokenPathInterceptor implements Handler { } // 2. 写入输出流 - if(result != null) { + if (result != null) { ctx.render(result); } ctx.setHandled(true); } } + + private void authAnno(Action action) { + //2.验证注解处理 + if (isAnnotation && action != null) { + // 获取此请求对应的 Method 处理函数 + Method method = action.method().getMethod(); + + // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 + if (SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { + return; + } + + // 注解校验 + SaStrategy.me.checkMethodAnnotation.accept(method); + } + } }