From e80369eb4b7276f98662a2bcc3c01a9a2acab422 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Wed, 4 Jun 2025 00:15:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20sa-token-dubbo=20?= =?UTF-8?q?=E4=B8=8E=20=20sa-token-dubbo3=20=E6=AF=8F=E6=AC=A1=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E9=83=BD=E5=BC=BA=E5=88=B6=E9=9C=80=E8=A6=81=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E6=96=87=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../filter/SaTokenDubboConsumerFilter.java | 18 ++++++++++++------ .../filter/SaTokenDubboContextFilter.java | 13 ++++++------- .../filter/SaTokenDubbo3ConsumerFilter.java | 6 ++++++ .../filter/SaTokenDubbo3ContextFilter.java | 14 +++++++------- 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/sa-token-plugin/sa-token-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboConsumerFilter.java b/sa-token-plugin/sa-token-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboConsumerFilter.java index 1faab139..a9f10e8c 100644 --- a/sa-token-plugin/sa-token-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboConsumerFilter.java +++ b/sa-token-plugin/sa-token-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboConsumerFilter.java @@ -16,6 +16,7 @@ package cn.dev33.satoken.context.dubbo.filter; import cn.dev33.satoken.SaManager; +import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.context.SaTokenContextDefaultImpl; import cn.dev33.satoken.same.SaSameUtil; import cn.dev33.satoken.stp.StpUtil; @@ -36,23 +37,28 @@ public class SaTokenDubboConsumerFilter implements Filter { @Override public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { - // 1、追加 Same-Token 参数 + // 追加 Same-Token 参数 if(SaManager.getConfig().getCheckSameToken()) { RpcContext.getContext().setAttachment(SaSameUtil.SAME_TOKEN, SaSameUtil.getToken()); } - - // 2、调用前,向下传递会话Token + + // 无上下文时只做简单调用,不传递会话 token + if( ! SaHolder.getContext().isValid()) { + return invoker.invoke(invocation); + } + + // 1、调用前,向下传递会话Token if(SaManager.getSaTokenContext() != SaTokenContextDefaultImpl.defaultContext) { RpcContext.getContext().setAttachment(SaTokenConsts.JUST_CREATED, StpUtil.getTokenValueNotCut()); } - // 3、开始调用 + // 2、开始调用 Result invoke = invoker.invoke(invocation); - // 4、调用后,解析回传的Token值 + // 3、调用后,解析回传的Token值 StpUtil.setTokenValue(invoke.getAttachment(SaTokenConsts.JUST_CREATED_NOT_PREFIX)); - // 5、返回结果 + // note return invoke; } diff --git a/sa-token-plugin/sa-token-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboContextFilter.java b/sa-token-plugin/sa-token-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboContextFilter.java index 307f917d..585ba4a4 100644 --- a/sa-token-plugin/sa-token-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboContextFilter.java +++ b/sa-token-plugin/sa-token-dubbo/src/main/java/cn/dev33/satoken/context/dubbo/filter/SaTokenDubboContextFilter.java @@ -36,13 +36,12 @@ public class SaTokenDubboContextFilter implements Filter { public Result invoke(Invoker invoker, Invocation invocation) { if(SaHolder.getContext().isValid()) { return invoker.invoke(invocation); - } else { - try { - SaTokenContextDubboUtil.setContext(RpcContext.getContext()); - return invoker.invoke(invocation); - } finally { - SaManager.getSaTokenContext().clearContext(); - } + } + try { + SaTokenContextDubboUtil.setContext(RpcContext.getContext()); + return invoker.invoke(invocation); + } finally { + SaManager.getSaTokenContext().clearContext(); } } diff --git a/sa-token-plugin/sa-token-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ConsumerFilter.java b/sa-token-plugin/sa-token-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ConsumerFilter.java index 36fa8ced..4a6a6722 100644 --- a/sa-token-plugin/sa-token-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ConsumerFilter.java +++ b/sa-token-plugin/sa-token-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ConsumerFilter.java @@ -16,6 +16,7 @@ package cn.dev33.satoken.context.dubbo3.filter; import cn.dev33.satoken.SaManager; +import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.context.SaTokenContextDefaultImpl; import cn.dev33.satoken.same.SaSameUtil; import cn.dev33.satoken.stp.StpUtil; @@ -40,6 +41,11 @@ public class SaTokenDubbo3ConsumerFilter implements Filter { if(SaManager.getConfig().getCheckSameToken()) { RpcContext.getServiceContext().setAttachment(SaSameUtil.SAME_TOKEN,SaSameUtil.getToken()); } + + // 无上下文时只做简单调用,不传递会话 token + if( ! SaHolder.getContext().isValid()) { + return invoker.invoke(invocation); + } // 1. 调用前,向下传递会话Token if(SaManager.getSaTokenContext() != SaTokenContextDefaultImpl.defaultContext) { diff --git a/sa-token-plugin/sa-token-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ContextFilter.java b/sa-token-plugin/sa-token-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ContextFilter.java index a2eade09..c1f6b5e6 100644 --- a/sa-token-plugin/sa-token-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ContextFilter.java +++ b/sa-token-plugin/sa-token-dubbo3/src/main/java/cn/dev33/satoken/context/dubbo3/filter/SaTokenDubbo3ContextFilter.java @@ -36,14 +36,14 @@ public class SaTokenDubbo3ContextFilter implements Filter { public Result invoke(Invoker invoker, Invocation invocation) { if(SaHolder.getContext().isValid()) { return invoker.invoke(invocation); - } else { - try { - SaTokenContextDubbo3Util.setContext(RpcContext.getServiceContext()); - return invoker.invoke(invocation); - } finally { - SaManager.getSaTokenContext().clearContext(); - } } + try { + SaTokenContextDubbo3Util.setContext(RpcContext.getServiceContext()); + return invoker.invoke(invocation); + } finally { + SaManager.getSaTokenContext().clearContext(); + } + } }