From 4cf317818bf91f7ef571bca73e7e094e35195b8e Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Tue, 23 May 2023 05:01:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20SaCheckOr=20=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3=EF=BC=8C=E6=89=B9=E9=87=8F=E6=B3=A8=E8=A7=A3=E9=89=B4?= =?UTF-8?q?=E6=9D=83=EF=BC=9A=E5=8F=AA=E8=A6=81=E6=BB=A1=E8=B6=B3=E5=85=B6?= =?UTF-8?q?=E4=B8=AD=E4=B8=80=E4=B8=AA=E6=B3=A8=E8=A7=A3=E5=8D=B3=E5=8F=AF?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/dev33/satoken/SaManager.java | 2 +- .../dev33/satoken/annotation/SaCheckOr.java | 77 ++++++++++ .../satoken/session/SaSessionCustomUtil.java | 2 +- .../java/cn/dev33/satoken/stp/StpLogic.java | 14 +- .../cn/dev33/satoken/strategy/SaStrategy.java | 138 ++++++++++++++++-- .../dev33/satoken/temp/SaTempInterface.java | 2 +- .../java/com/pj/satoken/SaTokenConfigure.java | 2 +- .../main/java/com/pj/satoken/StpUserUtil.java | 2 + .../main/java/com/pj/satoken/StpUserUtil.java | 2 + .../main/java/com/pj/test/TestController.java | 5 +- .../oauth2/logic/SaOAuth2Template.java | 2 +- .../satoken/dao/SaTokenDaoRedisFastjson.java | 2 +- .../satoken/dao/SaTokenDaoRedisFastjson2.java | 2 +- .../satoken/dao/SaTokenDaoRedisJackson.java | 2 +- .../dao/SaTokenDaoRedissonJackson.java | 2 +- .../satoken/dao/SaTokenDaoOfRedisJson.java | 2 +- .../cn/dev33/satoken/aop/SaCheckAspect.java | 4 +- .../cn/dev33/satoken/sso/SaSsoTemplate.java | 2 +- .../jboot/SaAnnotationInterceptor.java | 2 +- .../jfinal/SaAnnotationInterceptor.java | 2 +- .../solon/dao/SaTokenDaoOfRedisJson.java | 2 +- .../solon/integration/SaTokenFilter.java | 4 +- .../solon/integration/SaTokenInterceptor.java | 4 +- .../satoken/interceptor/SaInterceptor.java | 4 +- .../satoken/interceptor/SaInterceptor.java | 4 +- 25 files changed, 241 insertions(+), 45 deletions(-) create mode 100644 sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckOr.java diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java index c930197c..ee1f552e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java @@ -323,7 +323,7 @@ public class SaManager { synchronized (SaManager.class) { stpLogic = stpLogicMap.get(loginType); if(stpLogic == null) { - stpLogic = SaStrategy.me.createStpLogic.apply(loginType); + stpLogic = SaStrategy.instance.createStpLogic.apply(loginType); } } } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckOr.java b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckOr.java new file mode 100644 index 00000000..e9cef129 --- /dev/null +++ b/sa-token-core/src/main/java/cn/dev33/satoken/annotation/SaCheckOr.java @@ -0,0 +1,77 @@ +/* + * Copyright 2020-2099 sa-token.cc + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package cn.dev33.satoken.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * 批量注解鉴权:只要满足其中一个注解即可通过验证 + * + *

可标注在方法、类上(效果等同于标注在此类的所有方法上) + * + * @author kong + * @since 1.35.0 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.METHOD, ElementType.TYPE }) +public @interface SaCheckOr { + + /** + * 设定 @SaCheckLogin,参考 {@link SaCheckLogin} + * + * @return / + */ + SaCheckLogin[] login() default {}; + + /** + * 设定 @SaCheckPermission,参考 {@link SaCheckPermission} + * + * @return / + */ + SaCheckPermission[] permission() default {}; + + /** + * 设定 @SaCheckRole,参考 {@link SaCheckRole} + * + * @return / + */ + SaCheckRole[] role() default {}; + + /** + * 设定 @SaCheckSafe,参考 {@link SaCheckSafe} + * + * @return / + */ + SaCheckSafe[] safe() default {}; + + /** + * 设定 @SaCheckBasic,参考 {@link SaCheckBasic} + * + * @return / + */ + SaCheckBasic[] basic() default {}; + + /** + * 设定 @SaCheckDisable,参考 {@link SaCheckDisable} + * + * @return / + */ + SaCheckDisable[] disable() default {}; + +} diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java index e38f23fa..eaa6834e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/session/SaSessionCustomUtil.java @@ -77,7 +77,7 @@ public class SaSessionCustomUtil { public static SaSession getSessionById(String sessionId, boolean isCreate) { SaSession session = SaManager.getSaTokenDao().getSession(splicingSessionKey(sessionId)); if (session == null && isCreate) { - session = SaStrategy.me.createSession.apply(splicingSessionKey(sessionId)); + session = SaStrategy.instance.createSession.apply(splicingSessionKey(sessionId)); session.setType(SaTokenConsts.SESSION_TYPE__CUSTOM); SaManager.getSaTokenDao().setSession(session, SaManager.getConfig().getTimeout()); } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java index 6825ede2..9c8bd942 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpLogic.java @@ -123,7 +123,7 @@ public class StpLogic { * @return 生成的tokenValue */ public String createTokenValue(Object loginId, String device, long timeout, Map extraData) { - return SaStrategy.me.createToken.apply(loginId, loginType); + return SaStrategy.instance.createToken.apply(loginId, loginType); } /** @@ -501,7 +501,7 @@ public class StpLogic { } // 4、如果代码走到此处,说明未能成功复用旧 token,需要根据算法新建 token - return SaStrategy.me.generateUniqueToken.execute( + return SaStrategy.instance.generateUniqueToken.execute( "token", getConfigOfMaxTryTimes(), () -> { @@ -1096,7 +1096,7 @@ public class StpLogic { if(session == null && isCreate) { // 创建这个 SaSession - session = SaStrategy.me.createSession.apply(sessionId); + session = SaStrategy.instance.createSession.apply(sessionId); // 追加操作 if(appendOperation != null) { @@ -1268,7 +1268,7 @@ public class StpLogic { */ if(isCreate) { // 随机创建一个 Token - tokenValue = SaStrategy.me.generateUniqueToken.execute( + tokenValue = SaStrategy.instance.generateUniqueToken.execute( "token", getConfigOfMaxTryTimes(), () -> { @@ -2099,8 +2099,8 @@ public class StpLogic { this.checkDisableLevel(loginId, service, at.level()); } } - - + + // ------------------- 账号封禁 ------------------- /** @@ -2715,7 +2715,7 @@ public class StpLogic { * @return / */ public boolean hasElement(List list, String element) { - return SaStrategy.me.hasElement.apply(list, element); + return SaStrategy.instance.hasElement.apply(list, element); } /** diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java index 2e8bf156..4b50b86e 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/strategy/SaStrategy.java @@ -28,6 +28,7 @@ import cn.dev33.satoken.util.SaTokenConsts; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.function.BiFunction; @@ -58,7 +59,8 @@ public final class SaStrategy { /** * 获取 SaStrategy 对象的单例引用 */ - public static final SaStrategy me = new SaStrategy(); + public static final SaStrategy instance = new SaStrategy(); + // ----------------------- 所有策略 @@ -145,10 +147,10 @@ public final class SaStrategy { public Consumer checkMethodAnnotation = (method) -> { // 先校验 Method 所属 Class 上的注解 - me.checkElementAnnotation.accept(method.getDeclaringClass()); + instance.checkElementAnnotation.accept(method.getDeclaringClass()); // 再校验 Method 上的注解 - me.checkElementAnnotation.accept(method); + instance.checkElementAnnotation.accept(method); }; /** @@ -156,41 +158,135 @@ public final class SaStrategy { *

参数 [element元素] */ public Consumer checkElementAnnotation = (target) -> { + // 校验 @SaCheckLogin 注解 - SaCheckLogin checkLogin = (SaCheckLogin) SaStrategy.me.getAnnotation.apply(target, SaCheckLogin.class); + SaCheckLogin checkLogin = (SaCheckLogin) SaStrategy.instance.getAnnotation.apply(target, SaCheckLogin.class); if(checkLogin != null) { SaManager.getStpLogic(checkLogin.type(), false).checkByAnnotation(checkLogin); } // 校验 @SaCheckRole 注解 - SaCheckRole checkRole = (SaCheckRole) SaStrategy.me.getAnnotation.apply(target, SaCheckRole.class); + SaCheckRole checkRole = (SaCheckRole) SaStrategy.instance.getAnnotation.apply(target, SaCheckRole.class); if(checkRole != null) { SaManager.getStpLogic(checkRole.type(), false).checkByAnnotation(checkRole); } // 校验 @SaCheckPermission 注解 - SaCheckPermission checkPermission = (SaCheckPermission) SaStrategy.me.getAnnotation.apply(target, SaCheckPermission.class); + SaCheckPermission checkPermission = (SaCheckPermission) SaStrategy.instance.getAnnotation.apply(target, SaCheckPermission.class); if(checkPermission != null) { SaManager.getStpLogic(checkPermission.type(), false).checkByAnnotation(checkPermission); } // 校验 @SaCheckSafe 注解 - SaCheckSafe checkSafe = (SaCheckSafe) SaStrategy.me.getAnnotation.apply(target, SaCheckSafe.class); + SaCheckSafe checkSafe = (SaCheckSafe) SaStrategy.instance.getAnnotation.apply(target, SaCheckSafe.class); if(checkSafe != null) { SaManager.getStpLogic(checkSafe.type(), false).checkByAnnotation(checkSafe); } // 校验 @SaCheckDisable 注解 - SaCheckDisable checkDisable = (SaCheckDisable) SaStrategy.me.getAnnotation.apply(target, SaCheckDisable.class); + SaCheckDisable checkDisable = (SaCheckDisable) SaStrategy.instance.getAnnotation.apply(target, SaCheckDisable.class); if(checkDisable != null) { SaManager.getStpLogic(checkDisable.type(), false).checkByAnnotation(checkDisable); } // 校验 @SaCheckBasic 注解 - SaCheckBasic checkBasic = (SaCheckBasic) SaStrategy.me.getAnnotation.apply(target, SaCheckBasic.class); + SaCheckBasic checkBasic = (SaCheckBasic) SaStrategy.instance.getAnnotation.apply(target, SaCheckBasic.class); if(checkBasic != null) { SaBasicUtil.check(checkBasic.realm(), checkBasic.account()); } + + // 校验 @SaCheckOr 注解 + SaCheckOr checkOr = (SaCheckOr) SaStrategy.instance.getAnnotation.apply(target, SaCheckOr.class); + if(checkOr != null) { + SaStrategy.instance.checkOrAnnotation.accept(checkOr); + } + }; + + /** + * 对一个 @SaCheckOr 进行注解校验 + *

参数 [SaCheckOr 注解的实例] + */ + public Consumer checkOrAnnotation = (at) -> { + + // 记录校验过程中所有的异常 + List errorList = new ArrayList<>(); + + // 逐个开始校验 >>> + + // 1、校验注解:@SaCheckLogin + SaCheckLogin[] checkLoginArray = at.login(); + for (SaCheckLogin item : checkLoginArray) { + try { + SaManager.getStpLogic(item.type(), false).checkByAnnotation(item); + return; + } catch (SaTokenException e) { + errorList.add(e); + } + } + + // 2、校验注解:@SaCheckRole + SaCheckRole[] checkRoleArray = at.role(); + for (SaCheckRole item : checkRoleArray) { + try { + SaManager.getStpLogic(item.type(), false).checkByAnnotation(item); + return; + } catch (SaTokenException e) { + errorList.add(e); + } + } + + // 3、校验注解:@SaCheckPermission + SaCheckPermission[] checkPermissionArray = at.permission(); + for (SaCheckPermission item : checkPermissionArray) { + try { + SaManager.getStpLogic(item.type(), false).checkByAnnotation(item); + return; + } catch (SaTokenException e) { + errorList.add(e); + } + } + + // 4、校验注解:@SaCheckSafe + SaCheckSafe[] checkSafeArray = at.safe(); + for (SaCheckSafe item : checkSafeArray) { + try { + SaManager.getStpLogic(item.type(), false).checkByAnnotation(item); + return; + } catch (SaTokenException e) { + errorList.add(e); + } + } + + // 5、校验注解:@SaCheckDisable + SaCheckDisable[] checkDisableArray = at.disable(); + for (SaCheckDisable item : checkDisableArray) { + try { + SaManager.getStpLogic(item.type(), false).checkByAnnotation(item); + return; + } catch (SaTokenException e) { + errorList.add(e); + } + } + + // 6、校验注解:@SaCheckBasic + SaCheckBasic[] checkBasicArray = at.basic(); + for (SaCheckBasic item : checkBasicArray) { + try { + SaBasicUtil.check(item.realm(), item.account()); + return; + } catch (SaTokenException e) { + errorList.add(e); + } + } + + // 如果执行到这里,有两种可能: + // 可能 1. SaCheckOr 注解上不包含任何注解校验,此时 errorList 里面一个异常都没有,我们直接跳过即可 + // 可能 2. 所有注解校验都通过不了,此时 errorList 里面会有多个异常,我们随便抛出一个即可 + if(errorList.size() == 0) { + // return; + } else { + throw errorList.get(0); + } }; /** @@ -207,8 +303,8 @@ public final class SaStrategy { *

参数 [Method, 注解] */ public BiFunction, Boolean> isAnnotationPresent = (method, annotationClass) -> { - return me.getAnnotation.apply(method, annotationClass) != null || - me.getAnnotation.apply(method.getDeclaringClass(), annotationClass) != null; + return instance.getAnnotation.apply(method, annotationClass) != null || + instance.getAnnotation.apply(method.getDeclaringClass(), annotationClass) != null; }; /** @@ -308,6 +404,18 @@ public final class SaStrategy { return this; } + /** + * 对一个 @SaCheckOr 进行注解校验 + *

参数 [SaCheckOr 注解的实例] + * + * @param checkOrAnnotation / + * @return 对象自身 + */ + public SaStrategy setCheckOrAnnotation(Consumer checkOrAnnotation) { + this.checkOrAnnotation = checkOrAnnotation; + return this; + } + /** * 从元素上获取注解 *

参数 [element元素,要获取的注解类型] @@ -355,4 +463,12 @@ public final class SaStrategy { return this; } + // + + /** + * 请更换为 instance + */ + @Deprecated + public static final SaStrategy me = instance; + } diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempInterface.java b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempInterface.java index c8e22eb1..0c081e54 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempInterface.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempInterface.java @@ -54,7 +54,7 @@ public interface SaTempInterface { default String createToken(String service, Object value, long timeout) { // 生成 token - String token = SaStrategy.me.createToken.apply(null, null); + String token = SaStrategy.instance.createToken.apply(null, null); // 持久化映射关系 String key = splicingKeyTempToken(service, token); diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaTokenConfigure.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaTokenConfigure.java index 537c32c5..c5c9f7a5 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaTokenConfigure.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/SaTokenConfigure.java @@ -117,7 +117,7 @@ public class SaTokenConfigure implements WebMvcConfigurer { @Autowired public void rewriteSaStrategy() { // 重写Sa-Token的注解处理器,增加注解合并功能 - SaStrategy.me.getAnnotation = (element, annotationClass) -> { + SaStrategy.instance.getAnnotation = (element, annotationClass) -> { return AnnotatedElementUtils.getMergedAnnotation(element, annotationClass); }; } diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java index d90cc967..9f526a9b 100644 --- a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/StpUserUtil.java @@ -7,6 +7,7 @@ import cn.dev33.satoken.session.SaSession; import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpLogic; +import org.springframework.stereotype.Component; import java.util.List; @@ -16,6 +17,7 @@ import java.util.List; * @author click33 * @since <= 1.34.0 */ +@Component public class StpUserUtil { private StpUserUtil() {} diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java index d90cc967..9f526a9b 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/satoken/StpUserUtil.java @@ -7,6 +7,7 @@ import cn.dev33.satoken.session.SaSession; import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpLogic; +import org.springframework.stereotype.Component; import java.util.List; @@ -16,6 +17,7 @@ import java.util.List; * @author click33 * @since <= 1.34.0 */ +@Component public class StpUserUtil { private StpUserUtil() {} diff --git a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java index 9c682c0e..6f977767 100644 --- a/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java +++ b/sa-token-demo/sa-token-demo-test/src/main/java/com/pj/test/TestController.java @@ -1,7 +1,7 @@ package com.pj.test; -import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaResult; +import com.pj.satoken.StpUserUtil; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -18,7 +18,7 @@ public class TestController { // 测试登录 ---- http://localhost:8081/test/login @RequestMapping("login") public SaResult login(@RequestParam(defaultValue = "10001") long id) { - StpUtil.login(id); + StpUserUtil.login(id); return SaResult.ok("登录成功"); } @@ -26,7 +26,6 @@ public class TestController { @RequestMapping("test") public SaResult test() { System.out.println("------------进来了"); - StpUtil.getExtra("name"); // 返回 return SaResult.data(""); } diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java index fa19ee73..3ec864d3 100644 --- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java +++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java @@ -398,7 +398,7 @@ public class SaOAuth2Template { // 3、是否在[允许地址列表]之中 List allowList = SaFoxUtil.convertStringToList(checkClientModel(clientId).allowUrl); - if( ! SaStrategy.me.hasElement.apply(allowList, url)) { + if( ! SaStrategy.instance.hasElement.apply(allowList, url)) { throw new SaOAuth2Exception("非法redirect_url:" + url).setCode(SaOAuth2ErrorCode.CODE_30114); } } diff --git a/sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson.java b/sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson.java index 7207076d..bd999f8c 100644 --- a/sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson.java +++ b/sa-token-plugin/sa-token-redis-fastjson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson.java @@ -64,7 +64,7 @@ public class SaTokenDaoRedisFastjson implements SaTokenDao { } // 重写 SaSession 生成策略 - SaStrategy.me.createSession = (sessionId) -> new SaSessionForFastjsonCustomized(sessionId); + SaStrategy.instance.createSession = (sessionId) -> new SaSessionForFastjsonCustomized(sessionId); // 指定相应的序列化方案 StringRedisSerializer keySerializer = new StringRedisSerializer(); diff --git a/sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson2.java b/sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson2.java index 2061ffb9..e53944db 100644 --- a/sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson2.java +++ b/sa-token-plugin/sa-token-redis-fastjson2/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisFastjson2.java @@ -64,7 +64,7 @@ public class SaTokenDaoRedisFastjson2 implements SaTokenDao { } // 重写 SaSession 生成策略 - SaStrategy.me.createSession = (sessionId) -> new SaSessionForFastjson2Customized(sessionId); + SaStrategy.instance.createSession = (sessionId) -> new SaSessionForFastjson2Customized(sessionId); // 指定相应的序列化方案 StringRedisSerializer keySerializer = new StringRedisSerializer(); diff --git a/sa-token-plugin/sa-token-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java b/sa-token-plugin/sa-token-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java index 10512e7d..83ca2383 100644 --- a/sa-token-plugin/sa-token-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java +++ b/sa-token-plugin/sa-token-redis-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedisJackson.java @@ -127,7 +127,7 @@ public class SaTokenDaoRedisJackson implements SaTokenDao { this.objectMapper.registerModule(timeModule); // 重写 SaSession 生成策略 - SaStrategy.me.createSession = (sessionId) -> new SaSessionForJacksonCustomized(sessionId); + SaStrategy.instance.createSession = (sessionId) -> new SaSessionForJacksonCustomized(sessionId); } catch (Exception e) { System.err.println(e.getMessage()); } diff --git a/sa-token-plugin/sa-token-redisson-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedissonJackson.java b/sa-token-plugin/sa-token-redisson-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedissonJackson.java index 2f954a29..00e68a72 100644 --- a/sa-token-plugin/sa-token-redisson-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedissonJackson.java +++ b/sa-token-plugin/sa-token-redisson-jackson/src/main/java/cn/dev33/satoken/dao/SaTokenDaoRedissonJackson.java @@ -120,7 +120,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao { timeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(TIME_FORMATTER)); this.objectMapper.registerModule(timeModule); // 重写 SaSession 生成策略 - SaStrategy.me.createSession = (sessionId) -> new SaSessionForJacksonCustomized(sessionId); + SaStrategy.instance.createSession = (sessionId) -> new SaSessionForJacksonCustomized(sessionId); } catch (Exception e) { System.err.println(e.getMessage()); } diff --git a/sa-token-plugin/sa-token-redisx/src/main/java/cn/dev33/satoken/dao/SaTokenDaoOfRedisJson.java b/sa-token-plugin/sa-token-redisx/src/main/java/cn/dev33/satoken/dao/SaTokenDaoOfRedisJson.java index 90ec9e05..525bd81e 100644 --- a/sa-token-plugin/sa-token-redisx/src/main/java/cn/dev33/satoken/dao/SaTokenDaoOfRedisJson.java +++ b/sa-token-plugin/sa-token-redisx/src/main/java/cn/dev33/satoken/dao/SaTokenDaoOfRedisJson.java @@ -44,7 +44,7 @@ public class SaTokenDaoOfRedisJson implements SaTokenDao { redisBucket = redisClient.getBucket(); // 重写 SaSession 生成策略 - SaStrategy.me.createSession = (sessionId) -> new SaSessionForJson(sessionId); + SaStrategy.instance.createSession = (sessionId) -> new SaSessionForJson(sessionId); } diff --git a/sa-token-plugin/sa-token-spring-aop/src/main/java/cn/dev33/satoken/aop/SaCheckAspect.java b/sa-token-plugin/sa-token-spring-aop/src/main/java/cn/dev33/satoken/aop/SaCheckAspect.java index d01d39a8..b2d7d074 100644 --- a/sa-token-plugin/sa-token-spring-aop/src/main/java/cn/dev33/satoken/aop/SaCheckAspect.java +++ b/sa-token-plugin/sa-token-spring-aop/src/main/java/cn/dev33/satoken/aop/SaCheckAspect.java @@ -83,11 +83,11 @@ public class SaCheckAspect { Method method = signature.getMethod(); // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 - if(SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { + if(SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { // ... } else { // 注解鉴权 - SaStrategy.me.checkMethodAnnotation.accept(method); + SaStrategy.instance.checkMethodAnnotation.accept(method); } // 执行原有逻辑 diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java index 7966dd3a..e9afff6c 100644 --- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java +++ b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java @@ -283,7 +283,7 @@ public class SaSsoTemplate { // 3、是否在[允许地址列表]之中 List authUrlList = Arrays.asList(getAllowUrl().replaceAll(" ", "").split(",")); - if( ! SaStrategy.me.hasElement.apply(authUrlList, url) ) { + if( ! SaStrategy.instance.hasElement.apply(authUrlList, url) ) { throw new SaSsoException("非法redirect:" + url).setCode(SaSsoErrorCode.CODE_30002); } diff --git a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaAnnotationInterceptor.java b/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaAnnotationInterceptor.java index 10df8d2a..4b5185d0 100644 --- a/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaAnnotationInterceptor.java +++ b/sa-token-starter/sa-token-jboot-plugin/src/main/java/cn/dev33/satoken/jboot/SaAnnotationInterceptor.java @@ -25,7 +25,7 @@ import com.jfinal.aop.Invocation; public class SaAnnotationInterceptor implements Interceptor { @Override public void intercept(Invocation invocation) { - SaStrategy.me.checkMethodAnnotation.accept((invocation.getMethod())); + SaStrategy.instance.checkMethodAnnotation.accept((invocation.getMethod())); invocation.invoke(); } } diff --git a/sa-token-starter/sa-token-jfinal-plugin/src/main/java/cn/dev33/satoken/jfinal/SaAnnotationInterceptor.java b/sa-token-starter/sa-token-jfinal-plugin/src/main/java/cn/dev33/satoken/jfinal/SaAnnotationInterceptor.java index 129e36f4..39f79cd5 100644 --- a/sa-token-starter/sa-token-jfinal-plugin/src/main/java/cn/dev33/satoken/jfinal/SaAnnotationInterceptor.java +++ b/sa-token-starter/sa-token-jfinal-plugin/src/main/java/cn/dev33/satoken/jfinal/SaAnnotationInterceptor.java @@ -25,7 +25,7 @@ import com.jfinal.aop.Invocation; public class SaAnnotationInterceptor implements Interceptor { @Override public void intercept(Invocation invocation) { - SaStrategy.me.checkMethodAnnotation.accept((invocation.getMethod())); + SaStrategy.instance.checkMethodAnnotation.accept((invocation.getMethod())); invocation.invoke(); } } diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisJson.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisJson.java index 771ddb9c..0d3c0c97 100644 --- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisJson.java +++ b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisJson.java @@ -45,7 +45,7 @@ public class SaTokenDaoOfRedisJson implements SaTokenDao { redisBucket = redisClient.getBucket(); // 重写 SaSession 生成策略 - SaStrategy.me.createSession = (sessionId) -> new SaSessionForJson(sessionId); + SaStrategy.instance.createSession = (sessionId) -> new SaSessionForJson(sessionId); } 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 1b811220..e419e2e7 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 @@ -181,12 +181,12 @@ public class SaTokenFilter implements SaFilter, Filter { //之所以改名,为 Method method = action.method().getMethod(); // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 - if (SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { + if (SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { return false; } // 注解校验 - SaStrategy.me.checkMethodAnnotation.accept(method); + SaStrategy.instance.checkMethodAnnotation.accept(method); } return true; 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 7b170ac5..aee75b60 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 @@ -230,12 +230,12 @@ public class SaTokenInterceptor implements RouterInterceptor { Method method = action.method().getMethod(); // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 - if (SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { + if (SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { return false; } // 注解校验 - SaStrategy.me.checkMethodAnnotation.accept(method); + SaStrategy.instance.checkMethodAnnotation.accept(method); } return true; diff --git a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java index c84f6787..78840ddd 100644 --- a/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java +++ b/sa-token-starter/sa-token-spring-boot-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java @@ -100,13 +100,13 @@ public class SaInterceptor implements HandlerInterceptor { Method method = ((HandlerMethod) handler).getMethod(); // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 - if(SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { + if(SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { // 注意这里直接就退出整个鉴权了,最底部的 auth.run() 路由拦截鉴权也被跳出了 return true; } // 执行注解鉴权 - SaStrategy.me.checkMethodAnnotation.accept(method); + SaStrategy.instance.checkMethodAnnotation.accept(method); } // Auth 路由拦截鉴权校验 diff --git a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java index 0884a2d7..e6c0fc13 100644 --- a/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java +++ b/sa-token-starter/sa-token-spring-boot3-starter/src/main/java/cn/dev33/satoken/interceptor/SaInterceptor.java @@ -101,13 +101,13 @@ public class SaInterceptor implements HandlerInterceptor { Method method = ((HandlerMethod) handler).getMethod(); // 如果此 Method 或其所属 Class 标注了 @SaIgnore,则忽略掉鉴权 - if(SaStrategy.me.isAnnotationPresent.apply(method, SaIgnore.class)) { + if(SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { // 注意这里直接就退出整个鉴权了,最底部的 auth.run() 路由拦截鉴权也被跳出了 return true; } // 注解校验 - SaStrategy.me.checkMethodAnnotation.accept(method); + SaStrategy.instance.checkMethodAnnotation.accept(method); } // Auth 校验