From d2be4393c57d33c5875633e2f8d7e1e9996df05e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Tue, 14 Aug 2018 12:54:36 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E3=80=82=E9=87=8D=E5=86=99feign=20oauth=20interceptor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 16 ++++- .../PigxFeignClientConfiguration.java} | 10 +-- .../feign/PigxFeignClientInterceptor.java | 61 +++++++++++++++++++ .../main/resources/META-INF/spring.factories | 2 +- pigx-visual/pigx-codegen/Dockerfile | 13 ++++ pigx-visual/pigx-codegen/pom.xml | 3 + .../src/main/resources/template/index.vue.vm | 2 +- 7 files changed, 98 insertions(+), 9 deletions(-) rename pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/{interceptor/PigxFeignClientInterceptor.java => feign/PigxFeignClientConfiguration.java} (85%) create mode 100644 pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientInterceptor.java create mode 100644 pigx-visual/pigx-codegen/Dockerfile diff --git a/docker-compose.yml b/docker-compose.yml index f40895a71..a515a2a09 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -43,7 +43,7 @@ services: ports: - 3000:3000 - pig-upms: + pigx-upms: links: - pigx-eureka - pigx-redis @@ -53,7 +53,7 @@ services: dockerfile: ./pigx-upms/pigx-upms-biz/Dockerfile restart: always - pig-monitor: + pigx-monitor: links: - pigx-eureka build: @@ -63,7 +63,7 @@ services: ports: - 5001:5001 - pig-daemon: + pigx-daemon: links: - pigx-eureka build: @@ -72,3 +72,13 @@ services: restart: always ports: - 5002:5002 + + pigx-codegen: + links: + - pigx-eureka + build: + context: ./ + dockerfile: ./pigx-visual/pigx-codegen/Dockerfile + restart: always + ports: + - 5003:5003 diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/PigxFeignClientInterceptor.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientConfiguration.java similarity index 85% rename from pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/PigxFeignClientInterceptor.java rename to pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientConfiguration.java index 65f7f0a13..84ffd021a 100644 --- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/PigxFeignClientInterceptor.java +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientConfiguration.java @@ -17,11 +17,11 @@ * */ -package com.pig4cloud.pigx.common.security.interceptor; +package com.pig4cloud.pigx.common.security.feign; import feign.RequestInterceptor; +import lombok.AllArgsConstructor; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.cloud.security.oauth2.client.feign.OAuth2FeignRequestInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.oauth2.client.OAuth2ClientContext; @@ -34,11 +34,13 @@ import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResour * 使用hystrix 的信号量模式 */ @Configuration +@AllArgsConstructor @ConditionalOnProperty("security.oauth2.client.client-id") -public class PigxFeignClientInterceptor { +public class PigxFeignClientConfiguration { + @Bean public RequestInterceptor oauth2FeignRequestInterceptor(OAuth2ClientContext oAuth2ClientContext, OAuth2ProtectedResourceDetails resource) { - return new OAuth2FeignRequestInterceptor(oAuth2ClientContext, resource); + return new PigxFeignClientInterceptor(oAuth2ClientContext, resource); } } diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientInterceptor.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientInterceptor.java new file mode 100644 index 000000000..b93c3a925 --- /dev/null +++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientInterceptor.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2018-2025, lengleng All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the pig4cloud.com developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: lengleng (wangiegie@gmail.com) + */ + +package com.pig4cloud.pigx.common.security.feign; + +import feign.RequestTemplate; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.security.oauth2.client.feign.OAuth2FeignRequestInterceptor; +import org.springframework.security.oauth2.client.OAuth2ClientContext; +import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails; + +/** + * @author lengleng + * @date 2018/8/13 + * 扩展OAuth2FeignRequestInterceptor + */ +@Slf4j +public class PigxFeignClientInterceptor extends OAuth2FeignRequestInterceptor { + private final OAuth2ClientContext oAuth2ClientContext; + + /** + * Default constructor which uses the provided OAuth2ClientContext and Bearer tokens + * within Authorization header + * + * @param oAuth2ClientContext provided context + * @param resource type of resource to be accessed + */ + public PigxFeignClientInterceptor(OAuth2ClientContext oAuth2ClientContext + , OAuth2ProtectedResourceDetails resource) { + super(oAuth2ClientContext, resource); + this.oAuth2ClientContext = oAuth2ClientContext; + } + + + /** + * Create a template with the header of provided name and extracted extract + * + * @param template + */ + @Override + public void apply(RequestTemplate template) { + if (oAuth2ClientContext != null + && oAuth2ClientContext.getAccessToken() != null) { + super.apply(template); + } + } +} diff --git a/pigx-common/pigx-common-security/src/main/resources/META-INF/spring.factories b/pigx-common/pigx-common-security/src/main/resources/META-INF/spring.factories index 115039a66..c93a4a429 100644 --- a/pigx-common/pigx-common-security/src/main/resources/META-INF/spring.factories +++ b/pigx-common/pigx-common-security/src/main/resources/META-INF/spring.factories @@ -2,4 +2,4 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.pig4cloud.pigx.common.security.component.PermissionService,\ com.pig4cloud.pigx.common.security.component.PigAccessDeniedHandler,\ com.pig4cloud.pigx.common.security.component.ResourceAuthExceptionEntryPoint,\ - com.pig4cloud.pigx.common.security.interceptor.PigxFeignClientInterceptor + com.pig4cloud.pigx.common.security.feign.PigxFeignClientConfiguration diff --git a/pigx-visual/pigx-codegen/Dockerfile b/pigx-visual/pigx-codegen/Dockerfile new file mode 100644 index 000000000..0df7a6417 --- /dev/null +++ b/pigx-visual/pigx-codegen/Dockerfile @@ -0,0 +1,13 @@ +FROM anapsix/alpine-java:8_server-jre_unlimited + +MAINTAINER wangiegie@gmail.com + +RUN mkdir -p /pigx/bin/com.pig4cloud/pigx-codegen + +WORKDIR /pigx/bin/com.pig4cloud/pigx-codegen + +EXPOSE 5001 + +ADD ./pigx-visual/pigx-codegen/target/pigx-codegen.jar ./ + +CMD java -Djava.security.egd=file:/dev/./urandom -jar pigx-codegen.jar diff --git a/pigx-visual/pigx-codegen/pom.xml b/pigx-visual/pigx-codegen/pom.xml index 29f8a3a60..17e5dd70f 100755 --- a/pigx-visual/pigx-codegen/pom.xml +++ b/pigx-visual/pigx-codegen/pom.xml @@ -73,6 +73,9 @@ org.springframework.boot spring-boot-maven-plugin + + ${project.name} + diff --git a/pigx-visual/pigx-codegen/src/main/resources/template/index.vue.vm b/pigx-visual/pigx-codegen/src/main/resources/template/index.vue.vm index 583d7a43f..11129d7b4 100755 --- a/pigx-visual/pigx-codegen/src/main/resources/template/index.vue.vm +++ b/pigx-visual/pigx-codegen/src/main/resources/template/index.vue.vm @@ -117,7 +117,7 @@ }, rowDel: function(row, index) { var _this = this - this.$confirm('是否确认删除ID为' + row.clientId, '提示', { + this.$confirm('是否确认删除ID为' + row.$pk.lowerAttrName, '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning'