重构代码:优化Dubbo调用时向下传递Token的规则,可避免在项目启动时由于Context无效引发的bug

This commit is contained in:
click33 2021-12-23 04:52:36 +08:00
parent e2463b7e03
commit 7a53b5cb00

View File

@ -1,6 +1,5 @@
package cn.dev33.satoken.context.dubbo.filter;
import cn.dev33.satoken.exception.SaTokenException;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.Filter;
@ -11,6 +10,7 @@ import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcException;
import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.context.SaTokenContextDefaultImpl;
import cn.dev33.satoken.id.SaIdUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaTokenConsts;
@ -34,15 +34,10 @@ public class SaTokenDubboConsumerFilter implements Filter {
}
// 1. 调用前向下传递会话Token
String tokenValueNotCut = null;
try {
tokenValueNotCut = StpUtil.getTokenValueNotCut();
} catch (SaTokenException exception){
} finally {
RpcContext.getContext().setAttachment(SaTokenConsts.JUST_CREATED, tokenValueNotCut);
if(SaManager.getSaTokenContextOrSecond() != SaTokenContextDefaultImpl.defaultContext) {
RpcContext.getContext().setAttachment(SaTokenConsts.JUST_CREATED, StpUtil.getTokenValueNotCut());
}
// 2. 开始调用
Result invoke = invoker.invoke(invocation);