From ca6e7a4528591c96eea2a611e60f42b98f668fe4 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 11 Jun 2022 22:24:15 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=A2=9E=E5=8A=A0=20RPC=20starter=202.=20?= =?UTF-8?q?security=20=E7=BB=84=E4=BB=B6=EF=BC=9Afeign=20=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E6=97=B6=EF=BC=8C=E9=80=9A=E8=BF=87=20header=20?= =?UTF-8?q?=E9=80=8F=E4=BC=A0=20LoginUser=20=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-dependencies/pom.xml | 7 +++ yudao-framework/pom.xml | 1 + .../yudao-spring-boot-starter-rpc/pom.xml | 42 ++++++++++++++++ .../framework/rpc/config/package-info.java | 4 ++ .../framework/rpc/core/package-info.java | 4 ++ .../framework/rpc/core/util/FeignUtils.java | 48 +++++++++++++++++++ .../yudao/framework/rpc/package-info.java | 7 +++ .../《芋道 Spring Boot Dubbo 入门》.md | 1 + ...芋道 Spring Boot 声明式调用 Feign 入门》.md | 1 + ...Spring Cloud Alibaba 服务调用 Dubbo 入门》.md | 1 + ...道 Spring Cloud 声明式调用 Feign 入门》.md | 1 + .../pom.xml | 14 ++---- ...=> YudaoSecurityRpcAutoConfiguration.java} | 11 ++++- .../core/rpc/LoginUserRequestInterceptor.java | 19 ++++++++ .../main/resources/META-INF/spring.factories | 2 +- yudao-gateway/pom.xml | 9 +--- .../src/main/resources/application.yaml | 3 ++ .../yudao-module-infra-biz/pom.xml | 9 +--- .../yudao-module-system-biz/pom.xml | 9 +--- 19 files changed, 159 insertions(+), 34 deletions(-) create mode 100644 yudao-framework/yudao-spring-boot-starter-rpc/pom.xml create mode 100644 yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/config/package-info.java create mode 100644 yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/package-info.java create mode 100644 yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/util/FeignUtils.java create mode 100644 yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/package-info.java create mode 100644 yudao-framework/yudao-spring-boot-starter-rpc/《芋道 Spring Boot Dubbo 入门》.md create mode 100644 yudao-framework/yudao-spring-boot-starter-rpc/《芋道 Spring Boot 声明式调用 Feign 入门》.md create mode 100644 yudao-framework/yudao-spring-boot-starter-rpc/《芋道 Spring Cloud Alibaba 服务调用 Dubbo 入门》.md create mode 100644 yudao-framework/yudao-spring-boot-starter-rpc/《芋道 Spring Cloud 声明式调用 Feign 入门》.md rename yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/{YudaoSecurityFeignAutoConfiguration.java => YudaoSecurityRpcAutoConfiguration.java} (58%) create mode 100644 yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/rpc/LoginUserRequestInterceptor.java diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index 9b4a4316d..8cb328656 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -222,6 +222,13 @@ ${redisson.version} + + + cn.iocoder.cloud + yudao-spring-boot-starter-rpc + ${revision} + + diff --git a/yudao-framework/pom.xml b/yudao-framework/pom.xml index a5850bd42..e13419176 100644 --- a/yudao-framework/pom.xml +++ b/yudao-framework/pom.xml @@ -21,6 +21,7 @@ yudao-spring-boot-starter-protection yudao-spring-boot-starter-job yudao-spring-boot-starter-mq + yudao-spring-boot-starter-rpc yudao-spring-boot-starter-excel yudao-spring-boot-starter-test diff --git a/yudao-framework/yudao-spring-boot-starter-rpc/pom.xml b/yudao-framework/yudao-spring-boot-starter-rpc/pom.xml new file mode 100644 index 000000000..42389560c --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-rpc/pom.xml @@ -0,0 +1,42 @@ + + + + yudao-framework + cn.iocoder.cloud + ${revision} + + 4.0.0 + yudao-spring-boot-starter-rpc + jar + + ${project.artifactId} + + OpenFeign:提供 RESTful API 的调用 + Dubbo:提供 Dubbo RPC 的调用 + + https://github.com/YunaiV/ruoyi-vue-pro + + + + cn.iocoder.cloud + yudao-common + + + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + com.alibaba.cloud + spring-cloud-starter-dubbo + + + diff --git a/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/config/package-info.java b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/config/package-info.java new file mode 100644 index 000000000..516acc537 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/config/package-info.java @@ -0,0 +1,4 @@ +/** + * 占坑 TODO + */ +package cn.iocoder.yudao.framework.rpc.config; diff --git a/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/package-info.java b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/package-info.java new file mode 100644 index 000000000..e8e494628 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/package-info.java @@ -0,0 +1,4 @@ +/** + * 占坑 TODO + */ +package cn.iocoder.yudao.framework.rpc.core; diff --git a/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/util/FeignUtils.java b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/util/FeignUtils.java new file mode 100644 index 000000000..af81e0be6 --- /dev/null +++ b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/util/FeignUtils.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.framework.rpc.core.util; + +import cn.hutool.core.util.ReflectUtil; +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; +import feign.RequestTemplate; +import feign.template.HeaderTemplate; +import feign.template.Literal; +import feign.template.Template; +import feign.template.TemplateChunk; + +import java.util.List; +import java.util.Map; + +/** + * {@link feign.Feign} 工具类 + * + * @author 芋道源码 + */ +public class FeignUtils { + + /** + * 添加 JSON 格式的 Header + * + * @param requestTemplate 请求 + * @param name header 名 + * @param value header 值 + */ + @SuppressWarnings("unchecked") + public static void createJsonHeader(RequestTemplate requestTemplate, String name, Object value) { + if (value == null) { + return; + } + // 添加 header + String valueStr = JsonUtils.toJsonString(value); + requestTemplate.header(name, valueStr); + // fix:由于 OpenFeign 针对 { 会进行分词,所以需要反射修改 + // 具体分析,可见 https://zhuanlan.zhihu.com/p/360501330 文档 + Map headers = (Map) + ReflectUtil.getFieldValue(requestTemplate, "headers"); + HeaderTemplate template = headers.get(name); + List