From ec06b8f6449d885c99cae55617c206bd495aba5e Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Wed, 9 Apr 2025 14:43:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=B8=B4=E6=97=B6=20token=20?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E6=A8=A1=E5=9D=97=E7=BB=86=E8=8A=82=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=B8=8E=20demo=E3=80=81=E6=96=87=E6=A1=A3=E8=A1=A5?= =?UTF-8?q?=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/cn/dev33/satoken/SaManager.java | 2 +- .../cn/dev33/satoken/temp/SaTempTemplate.java | 2 +- .../java/com/pj/satoken/MySaTempTemplate.java | 26 ++++++++++++++ sa-token-doc/fun/plugin-dev.md | 35 ++++++++++--------- 4 files changed, 46 insertions(+), 19 deletions(-) create mode 100644 sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTempTemplate.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 5b73c86e..bb218e25 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 @@ -169,7 +169,7 @@ public class SaManager { private volatile static SaTempTemplate saTempTemplate; public static void setSaTempTemplate(SaTempTemplate saTempTemplate) { SaManager.saTempTemplate = saTempTemplate; - SaTokenEventCenter.doRegisterComponent("SaTempInterface", saTempTemplate); + SaTokenEventCenter.doRegisterComponent("SaTempTemplate", saTempTemplate); } public static SaTempTemplate getSaTempTemplate() { if (saTempTemplate == null) { diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempTemplate.java b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempTemplate.java index 0496db02..83bf3e7f 100644 --- a/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempTemplate.java +++ b/sa-token-core/src/main/java/cn/dev33/satoken/temp/SaTempTemplate.java @@ -108,7 +108,7 @@ public class SaTempTemplate { "Temp Token", SaManager.getConfig().getMaxTryTimes(), () -> randomTempToken(value), - _apiKey -> parseToken(_apiKey) == null + _apiKey -> _getValue(_apiKey) == null ); } diff --git a/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTempTemplate.java b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTempTemplate.java new file mode 100644 index 00000000..b1dc5616 --- /dev/null +++ b/sa-token-demo/sa-token-demo-case/src/main/java/com/pj/satoken/MySaTempTemplate.java @@ -0,0 +1,26 @@ +package com.pj.satoken; + +import cn.dev33.satoken.temp.SaTempTemplate; + +/** + * 自定义临时 token 认证组件子类 + * + * @author click33 + * @since 2025/4/9 + */ +//@Component +public class MySaTempTemplate extends SaTempTemplate { + + @Override + public String createToken(Object value, long timeout, boolean isRecordIndex) { + System.out.println("------- 自定义一些逻辑 createToken "); + return super.createToken(value, timeout, isRecordIndex); + } + + @Override + public Object parseToken(String token) { + System.out.println("------- 自定义一些逻辑 parseToken "); + return super.parseToken(token); + } + +} \ No newline at end of file diff --git a/sa-token-doc/fun/plugin-dev.md b/sa-token-doc/fun/plugin-dev.md index 586e33d7..d853b974 100644 --- a/sa-token-doc/fun/plugin-dev.md +++ b/sa-token-doc/fun/plugin-dev.md @@ -36,26 +36,27 @@ SaStrategy.instance.createToken = (loginId, loginType) -> { ### 方式2:更改全局组件实现 -你可以找到不符合你需求的组件,重新定义一个实现类,以 临时令牌认证 模块为例,你需要自定义 `SaTempInterface` 的实现类: +你可以找到不符合你需求的组件,重新定义一个子类,以 临时令牌认证 模块为例,你需要自定义 `SaTempTemplate` 的子类: ``` java /** - * 临时认证模块 自定义实现 + * 临时认证模块 自定义子类实现 */ -public class MySaTemp implements SaTempInterface { +@Component +public class MySaTempTemplate extends SaTempTemplate { + + @Override + public String createToken(Object value, long timeout, boolean isRecordIndex) { + System.out.println("------- 自定义一些逻辑 createToken "); + return super.createToken(value, timeout, isRecordIndex); + } + + @Override + public Object parseToken(String token) { + System.out.println("------- 自定义一些逻辑 parseToken "); + return super.parseToken(token); + } - @Override - public String createToken(Object value, long timeout) { - System.out.println("------- 自定义一些逻辑 createToken "); - return SaTempInterface.super.createToken(value, timeout); - } - - @Override - public Object parseToken(String token) { - System.out.println("------- 自定义一些逻辑 parseToken "); - return SaTempInterface.super.parseToken(token); - } - } ``` @@ -83,7 +84,7 @@ SaTokenContext 是对接不同框架的上下文接口,篇幅限制,可参 ``` java @Component -public class MySaTemp implements SaTempInterface { +public class MySaTempTemplate extends SaTempTemplate { // ... } ``` @@ -108,7 +109,7 @@ public void rewriteSaStrategy() { public static void main(String[] args) { // 示例:手动替换 Sa-Token 内部组件 // Sa-Token 大部分全局组件都定义在 SaManager 之上,参考:https://gitee.com/dromara/sa-token/blob/master/sa-token-core/src/main/java/cn/dev33/satoken/SaManager.java - SaManager.setSaTemp(new MySaTemp()); + SaManager.setSaTempTemplate(new MySaTempTemplate()); // 示例:手动重写 Sa-Token 全局策略 SaStrategy.instance.createToken = (loginId, loginType) -> {