JeecgBoot 3.3.0 版本发布,基于代码生成器的企业级低代码平台

This commit is contained in:
zhangdaiscott
2022-07-20 18:09:53 +08:00
parent c2973295cc
commit 790e0365d6
275 changed files with 7013 additions and 40279 deletions

View File

@ -12,6 +12,7 @@ import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.PathMatcherUtil;
import org.jeecg.common.config.mqtoken.UserTokenContext;
import org.jeecg.config.mybatis.TenantContext;
import org.jeecg.config.sign.interceptor.SignAuthConfiguration;
import org.jeecg.config.sign.util.HttpUtils;
import org.jeecg.config.sign.util.SignUtil;
@ -73,10 +74,27 @@ public class FeignConfig {
}
log.info("Feign Login Request token: {}", token);
requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token);
//update-begin-author:taoyan date:2022-6-23 for: issues/I5AO20 多租户微服务之间调用找不到tenant-id自定义页面
// 将tenantId信息放入header中
String tenantId = request.getHeader(CommonConstant.TENANT_ID);
if(tenantId==null || "".equals(tenantId)){
tenantId = request.getParameter(CommonConstant.TENANT_ID);
}
log.info("Feign Login Request tenantId: {}", tenantId);
requestTemplate.header(CommonConstant.TENANT_ID, tenantId);
//update-end-author:taoyan date:2022-6-23 for: issues/I5AO20 多租户微服务之间调用找不到tenant-id自定义页面
}else{
String token = UserTokenContext.getToken();
log.info("Feign no Login token: {}", token);
requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token);
//update-begin-author:taoyan date:2022-6-23 for: issues/I5AO20 多租户微服务之间调用找不到tenant-id自定义页面
String tenantId = TenantContext.getTenant();
log.info("Feign no Login tenantId: {}", tenantId);
requestTemplate.header(CommonConstant.TENANT_ID, tenantId);
//update-end-author:taoyan date:2022-6-23 for: issues/I5AO20 多租户微服务之间调用找不到tenant-id自定义页面
}
//================================================================================================================
@ -99,7 +117,9 @@ public class FeignConfig {
log.info(" Feign request params sign: {}",sign);
log.info("============================ [end] fegin starter url ============================");
requestTemplate.header(CommonConstant.X_SIGN, sign);
requestTemplate.header(CommonConstant.X_TIMESTAMP, DateUtils.getCurrentTimestamp().toString());
//update-begin--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯
requestTemplate.header(CommonConstant.X_TIMESTAMP, String.valueOf(System.currentTimeMillis()));
//update-end--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯
} catch (IOException e) {
e.printStackTrace();
}
@ -141,7 +161,7 @@ public class FeignConfig {
return new SpringEncoder(feignHttpMessageConverter());
}
@Bean("starterFeignDecoder")
@Bean
public Decoder feignDecoder() {
return new SpringDecoder(feignHttpMessageConverter());
}

View File

@ -1,12 +1,17 @@
package org.jeecg.starter.cloud.interceptor;
import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.RequestOriginParser;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.util.IpUtils;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
/**
* sentinel 授权规则拦截器
* 【示例】sentinel ip和参数授权规则拦截器(黑名单白名单)
* 1. 有参数origin的时候走参数拦截规则
* 2. 当参数为空时走ip拦截模式
*
* @author zyf
*/
@Component
@ -15,8 +20,12 @@ public class DefaultRequestOriginParser implements RequestOriginParser {
public String parseOrigin(HttpServletRequest request) {
//基于请求参数,origin对应授权规则中的流控应用名称,也可通过getHeader传参
String origin = request.getParameter("origin");
//TODO 此处做个通过IP做白名单的例子
return origin;
if (StringUtils.isNotEmpty(origin)) {
return origin;
} else {
//当参数为空使用ip拦截模式
String ip = IpUtils.getIpAddr(request);
return ip;
}
}
}