初始代码

This commit is contained in:
wangmingwei
2026-04-21 17:41:09 +08:00
parent 186ec6683a
commit b686ecac5f
493 changed files with 52349 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
package com.yunzhupaas.filter;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.*;
/**
* Dubbo请求过滤器
*/
@Slf4j
@Activate(group = { CommonConstants.PROVIDER, CommonConstants.CONSUMER }, order = 100)
public class MyDubboRequestFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
Result result;
// Provider端记录日志
if (RpcContext.getContext().isProviderSide()) {
long startTime = System.currentTimeMillis();
result = invoker.invoke(invocation);
long elapsed = System.currentTimeMillis() - startTime;
String baselog = "Client[" + CommonConstants.PROVIDER + "],InterfaceName=["
+ invocation.getInvoker().getInterface().getSimpleName() + "],MethodName=["
+ invocation.getMethodName() + "]";
if (result.hasException()) {
log.error("DUBBO - 处理异常: {}, Exception = {}", baselog, result.getException());
} else {
if (log.isDebugEnabled()) {
log.debug("DUBBO - 服务响应: {}, Elapsed=[{}ms]", baselog, elapsed);
}
}
} else {
result = invoker.invoke(invocation);
}
return result;
}
}

View File

@@ -0,0 +1,67 @@
package com.yunzhupaas.filter;
import cn.dev33.satoken.same.SaSameUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.yunzhupaas.base.UserInfo;
import com.yunzhupaas.consts.AuthConsts;
import com.yunzhupaas.properties.SecurityProperties;
import com.yunzhupaas.util.Constants;
import com.yunzhupaas.util.UserProvider;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.*;
/**
* Dubbo过滤器 自动传递装载UserInfo
*/
@Activate(group = { CommonConstants.PROVIDER, CommonConstants.CONSUMER }, order = 101)
public class MyDubboTokenFilter implements Filter {
private static SecurityProperties securityProperties;
public MyDubboTokenFilter() {
MyDubboTokenFilter.securityProperties = SpringUtil.getBean(SecurityProperties.class);
}
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
UserInfo userInfo;
Result result;
boolean isProvider;
String url = RpcContext.getContext().getUrl().toString();
if (url.startsWith("injvm")) {
isProvider = url.contains("side=provider");
} else {
isProvider = RpcContext.getContext().isProviderSide();
}
// Provider端
if (isProvider) {
try {
// 设置本地认证信息
userInfo = (UserInfo) RpcContext.getContext().getObjectAttachment(Constants.AUTHORIZATION);
UserProvider.setLocalLoginUser(userInfo);
if (securityProperties.isEnableInnerAuth()) {
String innerToken = invocation.getAttachment(AuthConsts.INNER_TOKEN_KEY);
SaSameUtil.checkToken(innerToken);
}
result = invoker.invoke(invocation);
} finally {
// 清除用户缓存
UserProvider.clearLocalUser();
}
} else {
// Consumer端
// 传递UserInfo
userInfo = UserProvider.getUser();
if (userInfo.getUserId() != null) {
invocation.setAttachment(Constants.AUTHORIZATION, userInfo);
}
if (securityProperties.isEnableInnerAuth()) {
invocation.setAttachment(AuthConsts.INNER_TOKEN_KEY, UserProvider.getInnerAuthToken());
}
result = invoker.invoke(invocation);
}
return result;
}
}

View File

@@ -0,0 +1,2 @@
yunzhupaasDubboToken=com.yunzhupaas.filter.MyDubboTokenFilter
yunzhupaasDubboRequest=com.yunzhupaas.filter.MyDubboRequestFilter

View File

@@ -0,0 +1,2 @@
# security/serialize.allowlist
com.yunzhupaas.base.UserInfo