1
0
mirror of synced 2026-05-22 14:43:15 +00:00

fix: 修复 sa-token-dubbo 模块,部分场景下无法正确处理上下文的问题

This commit is contained in:
click33
2025-04-16 15:31:01 +08:00
parent 95f4d62c8e
commit cc681672df
9 changed files with 68 additions and 45 deletions
@@ -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.dubbo.util.SaTokenContextDubboUtil;
import cn.dev33.satoken.util.SaTokenConsts;
import org.apache.dubbo.common.constants.CommonConstants;
@@ -33,11 +34,15 @@ public class SaTokenDubboContextFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) {
try {
SaTokenContextDubboUtil.setContext(RpcContext.getContext());
if(SaHolder.getContext().isValid()) {
return invoker.invoke(invocation);
} finally {
SaManager.getSaTokenContext().clearContext();
} else {
try {
SaTokenContextDubboUtil.setContext(RpcContext.getContext());
return invoker.invoke(invocation);
} finally {
SaManager.getSaTokenContext().clearContext();
}
}
}
@@ -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.dubbo3.util.SaTokenContextDubbo3Util;
import cn.dev33.satoken.util.SaTokenConsts;
import org.apache.dubbo.common.constants.CommonConstants;
@@ -33,11 +34,15 @@ public class SaTokenDubbo3ContextFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) {
try {
SaTokenContextDubbo3Util.setContext(RpcContext.getServiceContext());
if(SaHolder.getContext().isValid()) {
return invoker.invoke(invocation);
} finally {
SaManager.getSaTokenContext().clearContext();
} else {
try {
SaTokenContextDubbo3Util.setContext(RpcContext.getServiceContext());
return invoker.invoke(invocation);
} finally {
SaManager.getSaTokenContext().clearContext();
}
}
}