From be025d1a2e7c73597d94016e1afaff255aae2ae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81A?= Date: Tue, 7 Nov 2017 09:38:19 +0800 Subject: [PATCH 01/10] =?UTF-8?q?[Feature]=20=E5=A2=9E=E5=8A=A0=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 961fd5a2..3f2cdecb 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,9 @@ AG-Admin是国内首个基于`Spring Cloud`微`服务`化`开发平台`,具有 - 课程地址: http://edu.csdn.net/course/detail/5840 +## 阿里云服务器太贵?送你阿里云神卷,优惠最高达25% +https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ryr8l9eb&utm_source=ryr8l9eb + QQ群号:169824183 ![img](http://upload-images.jianshu.io/upload_images/5700335-002735d1727ec11b.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) -- Gitee From d0e1669ed9a8d605d4587d9e7039e92fa6450fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81A?= Date: Tue, 7 Nov 2017 09:38:53 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3f2cdecb..f5ca9c87 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,11 @@ AG-Admin是国内首个基于`Spring Cloud`微`服务`化`开发平台`,具有 - 课程地址: http://edu.csdn.net/course/detail/5840 +### QQ群号:169824183 + ## 阿里云服务器太贵?送你阿里云神卷,优惠最高达25% https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ryr8l9eb&utm_source=ryr8l9eb -QQ群号:169824183 - ![img](http://upload-images.jianshu.io/upload_images/5700335-002735d1727ec11b.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) -- Gitee From e51017d3f508427ec6050332a21d30bd3e30c485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B5=A9=E5=BD=AC?= Date: Tue, 14 Nov 2017 14:49:20 +0800 Subject: [PATCH 03/10] =?UTF-8?q?[Feature]=20=E5=A2=9E=E5=8A=A0docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ace-admin/pom.xml | 48 ++--- ace-admin/src/main/resources/application.yml | 11 +- ace-auth/ace-auth-server/pom.xml | 29 +++ .../src/main/docker/Dockerfile | 5 + .../src/main/resources/application.yml | 9 +- ace-center/pom.xml | 48 ++--- ace-config/pom.xml | 33 ++++ ace-config/src/main/docker/Dockerfile | 5 + ace-config/src/main/resources/application.yml | 14 +- ace-gate/ace-gate-server/pom.xml | 70 ++++--- .../src/main/docker/Dockerfile | 12 +- .../src/main/docker/wait-for-it.sh | 177 ++++++++++++++++++ .../src/main/resources/bootstrap.yml | 8 +- 13 files changed, 375 insertions(+), 94 deletions(-) create mode 100644 ace-auth/ace-auth-server/src/main/docker/Dockerfile create mode 100644 ace-config/src/main/docker/Dockerfile mode change 100644 => 100755 ace-gate/ace-gate-server/src/main/docker/Dockerfile create mode 100755 ace-gate/ace-gate-server/src/main/docker/wait-for-it.sh diff --git a/ace-admin/pom.xml b/ace-admin/pom.xml index 8b7bad5e..9e9f1d1f 100644 --- a/ace-admin/pom.xml +++ b/ace-admin/pom.xml @@ -197,30 +197,30 @@ 1.8 - - - - - - - - - - - - - - - - - - - - - - - - + + com.spotify + docker-maven-plugin + ${docker.plugin.version} + + + package + + build + + + + + ${docker.image.prefix}/${project.build.finalName} + ${project.basedir}/src/main/docker + + + / + ${project.build.directory} + ${project.build.finalName}.jar + + + + \ No newline at end of file diff --git a/ace-admin/src/main/resources/application.yml b/ace-admin/src/main/resources/application.yml index 1a66e378..9c87f489 100644 --- a/ace-admin/src/main/resources/application.yml +++ b/ace-admin/src/main/resources/application.yml @@ -42,15 +42,14 @@ eureka: statusPageUrlPath: /info healthCheckUrlPath: /health # docker 部署开启 -# prefer-ip-address: true -# ip-address: 127.0.0.1 + prefer-ip-address: true + ip-address: 127.0.0.1 client: - registerWithEureka: true - fetchRegistry: true serviceUrl: - defaultZone: http://localhost:8761/eureka/ +# defaultZone: http://localhost:8761/eureka/ # docker 部署开启 -# defaultZone: http://center:8761/eureka/ + defaultZone: http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka/ + swagger: basepackage: com.github.wxiaoqi.security.admin service: diff --git a/ace-auth/ace-auth-server/pom.xml b/ace-auth/ace-auth-server/pom.xml index 80b5f697..f46e2c2d 100644 --- a/ace-auth/ace-auth-server/pom.xml +++ b/ace-auth/ace-auth-server/pom.xml @@ -92,7 +92,36 @@ + ace-auth + + org.springframework.boot + spring-boot-maven-plugin + + + com.spotify + docker-maven-plugin + ${docker.plugin.version} + + + package + + build + + + + + ${docker.image.prefix}/${project.build.finalName} + ${project.basedir}/src/main/docker + + + / + ${project.build.directory} + ${project.build.finalName}.jar + + + + org.apache.maven.plugins maven-compiler-plugin diff --git a/ace-auth/ace-auth-server/src/main/docker/Dockerfile b/ace-auth/ace-auth-server/src/main/docker/Dockerfile new file mode 100644 index 00000000..05c55fa0 --- /dev/null +++ b/ace-auth/ace-auth-server/src/main/docker/Dockerfile @@ -0,0 +1,5 @@ +FROM livingobjects/jre8 +VOLUME /tmp +ADD ace-auth.jar app.jar +RUN bash -c 'touch /app.jar' +ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] diff --git a/ace-auth/ace-auth-server/src/main/resources/application.yml b/ace-auth/ace-auth-server/src/main/resources/application.yml index 9dc9a28f..e5dd7a6d 100644 --- a/ace-auth/ace-auth-server/src/main/resources/application.yml +++ b/ace-auth/ace-auth-server/src/main/resources/application.yml @@ -66,13 +66,14 @@ eureka: statusPageUrlPath: /info healthCheckUrlPath: /health # docker 部署开启 -# prefer-ip-address: true -# ip-address: 127.0.0.1 + prefer-ip-address: true + ip-address: 127.0.0.1 client: serviceUrl: - defaultZone: http://localhost:8761/eureka/ +# defaultZone: http://localhost:8761/eureka/ # docker 部署开启 -# defaultZone: http://center:8761/eureka/ + defaultZone: http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka/ + jwt: diff --git a/ace-center/pom.xml b/ace-center/pom.xml index 66628b5f..c8eda77f 100644 --- a/ace-center/pom.xml +++ b/ace-center/pom.xml @@ -41,30 +41,30 @@ org.springframework.boot spring-boot-maven-plugin - - - - - - - - - - - - - - - - - - - - - - - - + + com.spotify + docker-maven-plugin + ${docker.plugin.version} + + + package + + build + + + + + ${docker.image.prefix}/${project.build.finalName} + ${project.basedir}/src/main/docker + + + / + ${project.build.directory} + ${project.build.finalName}.jar + + + + \ No newline at end of file diff --git a/ace-config/pom.xml b/ace-config/pom.xml index 517ffea7..39a0dba2 100644 --- a/ace-config/pom.xml +++ b/ace-config/pom.xml @@ -26,11 +26,44 @@ + ace-config org.springframework.boot spring-boot-maven-plugin + + com.spotify + docker-maven-plugin + ${docker.plugin.version} + + + package + + build + + + + + ${docker.image.prefix}/${project.build.finalName} + ${project.basedir}/src/main/docker + + + / + ${project.build.directory} + ${project.build.finalName}.jar + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + diff --git a/ace-config/src/main/docker/Dockerfile b/ace-config/src/main/docker/Dockerfile new file mode 100644 index 00000000..5eec517c --- /dev/null +++ b/ace-config/src/main/docker/Dockerfile @@ -0,0 +1,5 @@ +FROM livingobjects/jre8 +VOLUME /tmp +ADD ace-config.jar app.jar +RUN bash -c 'touch /app.jar' +ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] diff --git a/ace-config/src/main/resources/application.yml b/ace-config/src/main/resources/application.yml index aa49cfec..5e859ebe 100644 --- a/ace-config/src/main/resources/application.yml +++ b/ace-config/src/main/resources/application.yml @@ -11,6 +11,14 @@ server: port: 8750 #启动端口 eureka: - client: - service-url: - defaultZone: http://localhost:8761/eureka \ No newline at end of file + instance: + statusPageUrlPath: /info + healthCheckUrlPath: /health + # docker 部署开启 + prefer-ip-address: true + ip-address: 127.0.0.1 + client: + serviceUrl: +# defaultZone: http://localhost:8761/eureka/ + # docker 部署开启 + defaultZone: http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka/ diff --git a/ace-gate/ace-gate-server/pom.xml b/ace-gate/ace-gate-server/pom.xml index 857c7122..a8cf3b86 100644 --- a/ace-gate/ace-gate-server/pom.xml +++ b/ace-gate/ace-gate-server/pom.xml @@ -74,30 +74,52 @@ org.springframework.boot spring-boot-maven-plugin - - - - - - - - - - - - - - - - - - - - - - - - + + org.apache.maven.plugins + maven-resources-plugin + + + prepare-dockerfile + validate + + copy-resources + + + ${project.build.directory}/docker + + + ${project.basedir}/src/main/docker + true + + + + + + + + com.spotify + docker-maven-plugin + ${docker.plugin.version} + + + package + + build + + + + + ${docker.image.prefix}/${project.build.finalName} + ${project.basedir}/src/main/docker + + + / + ${project.build.directory} + ${project.build.finalName}.jar + + + + org.apache.maven.plugins maven-compiler-plugin diff --git a/ace-gate/ace-gate-server/src/main/docker/Dockerfile b/ace-gate/ace-gate-server/src/main/docker/Dockerfile old mode 100644 new mode 100755 index 99c28b72..5bfd8cd4 --- a/ace-gate/ace-gate-server/src/main/docker/Dockerfile +++ b/ace-gate/ace-gate-server/src/main/docker/Dockerfile @@ -1,5 +1,7 @@ -FROM livingobjects/jre8 -VOLUME /tmp -ADD ace-gate.jar app.jar -RUN bash -c 'touch /app.jar' -ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] +FROM java:8 +VOLUME /tmp +ADD ace-gate.jar app.jar +ADD wait-for-it.sh /wait-for-it.sh +RUN sh -c 'touch /app.jar' +RUN bash -c 'chmod 777 /wait-for-it.sh' +CMD exec java -Djava.security.egd=file:/dev/./urandom -jar /app.jar \ No newline at end of file diff --git a/ace-gate/ace-gate-server/src/main/docker/wait-for-it.sh b/ace-gate/ace-gate-server/src/main/docker/wait-for-it.sh new file mode 100755 index 00000000..401a6f17 --- /dev/null +++ b/ace-gate/ace-gate-server/src/main/docker/wait-for-it.sh @@ -0,0 +1,177 @@ +#!/usr/bin/env bash +# Use this script to test if a given TCP host/port are available + +cmdname=$(basename $0) + +echoerr() { if [[ $QUIET -ne 1 ]]; then echo "$@" 1>&2; fi } + +usage() +{ + cat << USAGE >&2 +Usage: + $cmdname host:port [-s] [-t timeout] [-- command args] + -h HOST | --host=HOST Host or IP under test + -p PORT | --port=PORT TCP port under test + Alternatively, you specify the host and port as host:port + -s | --strict Only execute subcommand if the test succeeds + -q | --quiet Don't output any status messages + -t TIMEOUT | --timeout=TIMEOUT + Timeout in seconds, zero for no timeout + -- COMMAND ARGS Execute command with args after the test finishes +USAGE + exit 1 +} + +wait_for() +{ + if [[ $TIMEOUT -gt 0 ]]; then + echoerr "$cmdname: waiting $TIMEOUT seconds for $HOST:$PORT" + else + echoerr "$cmdname: waiting for $HOST:$PORT without a timeout" + fi + start_ts=$(date +%s) + while : + do + if [[ $ISBUSY -eq 1 ]]; then + nc -z $HOST $PORT + result=$? + else + (echo > /dev/tcp/$HOST/$PORT) >/dev/null 2>&1 + result=$? + fi + if [[ $result -eq 0 ]]; then + end_ts=$(date +%s) + echoerr "$cmdname: $HOST:$PORT is available after $((end_ts - start_ts)) seconds" + break + fi + sleep 1 + done + return $result +} + +wait_for_wrapper() +{ + # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692 + if [[ $QUIET -eq 1 ]]; then + timeout $BUSYTIMEFLAG $TIMEOUT $0 --quiet --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & + else + timeout $BUSYTIMEFLAG $TIMEOUT $0 --child --host=$HOST --port=$PORT --timeout=$TIMEOUT & + fi + PID=$! + trap "kill -INT -$PID" INT + wait $PID + RESULT=$? + if [[ $RESULT -ne 0 ]]; then + echoerr "$cmdname: timeout occurred after waiting $TIMEOUT seconds for $HOST:$PORT" + fi + return $RESULT +} + +# process arguments +while [[ $# -gt 0 ]] +do + case "$1" in + *:* ) + hostport=(${1//:/ }) + HOST=${hostport[0]} + PORT=${hostport[1]} + shift 1 + ;; + --child) + CHILD=1 + shift 1 + ;; + -q | --quiet) + QUIET=1 + shift 1 + ;; + -s | --strict) + STRICT=1 + shift 1 + ;; + -h) + HOST="$2" + if [[ $HOST == "" ]]; then break; fi + shift 2 + ;; + --host=*) + HOST="${1#*=}" + shift 1 + ;; + -p) + PORT="$2" + if [[ $PORT == "" ]]; then break; fi + shift 2 + ;; + --port=*) + PORT="${1#*=}" + shift 1 + ;; + -t) + TIMEOUT="$2" + if [[ $TIMEOUT == "" ]]; then break; fi + shift 2 + ;; + --timeout=*) + TIMEOUT="${1#*=}" + shift 1 + ;; + --) + shift + CLI="$@" + break + ;; + --help) + usage + ;; + *) + echoerr "Unknown argument: $1" + usage + ;; + esac +done + +if [[ "$HOST" == "" || "$PORT" == "" ]]; then + echoerr "Error: you need to provide a host and port to test." + usage +fi + +TIMEOUT=${TIMEOUT:-15} +STRICT=${STRICT:-0} +CHILD=${CHILD:-0} +QUIET=${QUIET:-0} + +# check to see if timeout is from busybox? +# check to see if timeout is from busybox? +TIMEOUT_PATH=$(realpath $(which timeout)) +if [[ $TIMEOUT_PATH =~ "busybox" ]]; then + ISBUSY=1 + BUSYTIMEFLAG="-t" +else + ISBUSY=0 + BUSYTIMEFLAG="" +fi + +if [[ $CHILD -gt 0 ]]; then + wait_for + RESULT=$? + exit $RESULT +else + if [[ $TIMEOUT -gt 0 ]]; then + wait_for_wrapper + RESULT=$? + else + wait_for + RESULT=$? + fi +fi + +if [[ $CLI != "" ]]; then + if [[ $RESULT -ne 0 && $STRICT -eq 1 ]]; then + echoerr "$cmdname: strict mode, refusing to execute subprocess" + exit $RESULT + fi + exec $CLI +else + exit $RESULT +fi diff --git a/ace-gate/ace-gate-server/src/main/resources/bootstrap.yml b/ace-gate/ace-gate-server/src/main/resources/bootstrap.yml index 1166e27a..2dd4503f 100644 --- a/ace-gate/ace-gate-server/src/main/resources/bootstrap.yml +++ b/ace-gate/ace-gate-server/src/main/resources/bootstrap.yml @@ -13,13 +13,13 @@ eureka: statusPageUrlPath: /info healthCheckUrlPath: /health # docker 部署开启 -# prefer-ip-address: true -# ip-address: 127.0.0.1 + prefer-ip-address: true + ip-address: 127.0.0.1 client: serviceUrl: - defaultZone: http://localhost:8761/eureka/ +# defaultZone: http://localhost:8761/eureka/ # docker 部署开启 -# defaultZone: http://center:8761/eureka/ + defaultZone: http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka/ #请求和响应GZIP压缩支持 feign: -- Gitee From 005ba7e40bc3b206a194401a376a498e36ce1466 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B5=A9=E5=BD=AC?= Date: Tue, 14 Nov 2017 19:11:43 +0800 Subject: [PATCH 04/10] =?UTF-8?q?[Feature]=20=20=E5=8F=96=E6=B6=88docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ace-admin/src/main/resources/application.yml | 4 ++-- ace-auth/ace-auth-server/src/main/resources/application.yml | 4 ++-- ace-config/src/main/resources/application.yml | 4 ++-- ace-gate/ace-gate-server/src/main/resources/bootstrap.yml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ace-admin/src/main/resources/application.yml b/ace-admin/src/main/resources/application.yml index 9c87f489..e193c367 100644 --- a/ace-admin/src/main/resources/application.yml +++ b/ace-admin/src/main/resources/application.yml @@ -42,8 +42,8 @@ eureka: statusPageUrlPath: /info healthCheckUrlPath: /health # docker 部署开启 - prefer-ip-address: true - ip-address: 127.0.0.1 +# prefer-ip-address: true +# ip-address: 127.0.0.1 client: serviceUrl: # defaultZone: http://localhost:8761/eureka/ diff --git a/ace-auth/ace-auth-server/src/main/resources/application.yml b/ace-auth/ace-auth-server/src/main/resources/application.yml index e5dd7a6d..3d678da9 100644 --- a/ace-auth/ace-auth-server/src/main/resources/application.yml +++ b/ace-auth/ace-auth-server/src/main/resources/application.yml @@ -66,8 +66,8 @@ eureka: statusPageUrlPath: /info healthCheckUrlPath: /health # docker 部署开启 - prefer-ip-address: true - ip-address: 127.0.0.1 +# prefer-ip-address: true +# ip-address: 127.0.0.1 client: serviceUrl: # defaultZone: http://localhost:8761/eureka/ diff --git a/ace-config/src/main/resources/application.yml b/ace-config/src/main/resources/application.yml index 5e859ebe..c03c1361 100644 --- a/ace-config/src/main/resources/application.yml +++ b/ace-config/src/main/resources/application.yml @@ -15,8 +15,8 @@ eureka: statusPageUrlPath: /info healthCheckUrlPath: /health # docker 部署开启 - prefer-ip-address: true - ip-address: 127.0.0.1 +# prefer-ip-address: true +# ip-address: 127.0.0.1 client: serviceUrl: # defaultZone: http://localhost:8761/eureka/ diff --git a/ace-gate/ace-gate-server/src/main/resources/bootstrap.yml b/ace-gate/ace-gate-server/src/main/resources/bootstrap.yml index 2dd4503f..882ce684 100644 --- a/ace-gate/ace-gate-server/src/main/resources/bootstrap.yml +++ b/ace-gate/ace-gate-server/src/main/resources/bootstrap.yml @@ -13,8 +13,8 @@ eureka: statusPageUrlPath: /info healthCheckUrlPath: /health # docker 部署开启 - prefer-ip-address: true - ip-address: 127.0.0.1 +# prefer-ip-address: true +# ip-address: 127.0.0.1 client: serviceUrl: # defaultZone: http://localhost:8761/eureka/ -- Gitee From 8f9848d2a5442f347ea038454a7c6311828c65b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B5=A9=E5=BD=AC?= Date: Wed, 15 Nov 2017 13:20:12 +0800 Subject: [PATCH 05/10] =?UTF-8?q?[Feature]=20=E5=A2=9E=E5=8A=A0=E5=8D=83?= =?UTF-8?q?=E9=93=AD=E4=BA=91=E5=AE=A3=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f5ca9c87..7c765e73 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,17 @@ http://edu.csdn.net/course/detail/5840 ### QQ群号:169824183 -## 阿里云服务器太贵?送你阿里云神卷,优惠最高达25% +## AG线上最新体验地址,感谢【[千铭云](https://www.chanmir.com/?u=45433C)】赞助的服务器。 + +http://43.248.136.159:9999/ + +## [老A专属优惠链接](https://www.chanmir.com/?u=45433C),优惠卷:2B3158 + + +### 阿里云服务器太贵?送你阿里云神卷,优惠最高达20% https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ryr8l9eb&utm_source=ryr8l9eb + ![img](http://upload-images.jianshu.io/upload_images/5700335-002735d1727ec11b.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) -- Gitee From b263590c33006298ded8fa10b7f4f11c0894e9e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B5=A9=E5=BD=AC?= Date: Thu, 16 Nov 2017 09:16:55 +0800 Subject: [PATCH 06/10] =?UTF-8?q?[Feature]=20=E9=87=8D=E6=9E=84=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=99=BB=E9=99=86=E6=A8=A1=E5=9D=97=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/admin/config/WebConfig.java | 12 ++-- .../wxiaoqi/security/admin/rpc/UserRest.java | 20 +++++-- .../admin/rpc/service/PermissionService.java | 13 +++++ .../interceptor/ServiceFeignInterceptor.java | 17 +++++- .../auth/controller/AuthController.java | 13 +---- .../security/auth/feign/IUserService.java | 13 +---- .../security/auth/service/AuthService.java | 4 +- .../auth/service/impl/AuthServiceImpl.java | 55 ++++++++----------- ace-gate/ace-gate-server/pom.xml | 5 ++ .../security/gate/feign/IUserService.java | 18 ++---- .../gate/filter/AdminAccessFilter.java | 43 +++++++++++---- 11 files changed, 120 insertions(+), 93 deletions(-) diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/WebConfig.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/WebConfig.java index 9fe68744..eb728ad6 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/WebConfig.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/WebConfig.java @@ -17,7 +17,7 @@ import java.util.Collections; @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Bean - GlobalExceptionHandler getGlobalExceptionHandler(){ + GlobalExceptionHandler getGlobalExceptionHandler() { return new GlobalExceptionHandler(); } @@ -25,28 +25,28 @@ public class WebConfig extends WebMvcConfigurerAdapter { public void addInterceptors(InterceptorRegistry registry) { ArrayList commonPathPatterns = getExcludeCommonPathPatterns(); registry.addInterceptor(getServiceAuthRestInterceptor()).addPathPatterns("/**").excludePathPatterns(commonPathPatterns.toArray(new String[]{})); - commonPathPatterns .add("/api/user/username/**"); + commonPathPatterns.add("/api/user/validate"); registry.addInterceptor(getUserAuthRestInterceptor()).addPathPatterns("/**").excludePathPatterns(commonPathPatterns.toArray(new String[]{})); super.addInterceptors(registry); } @Bean - ServiceAuthRestInterceptor getServiceAuthRestInterceptor(){ + ServiceAuthRestInterceptor getServiceAuthRestInterceptor() { return new ServiceAuthRestInterceptor(); } @Bean - UserAuthRestInterceptor getUserAuthRestInterceptor(){ + UserAuthRestInterceptor getUserAuthRestInterceptor() { return new UserAuthRestInterceptor(); } - private ArrayList getExcludeCommonPathPatterns(){ + private ArrayList getExcludeCommonPathPatterns() { ArrayList list = new ArrayList<>(); String[] urls = { "/v2/api-docs", "/swagger-resources/**" }; - Collections.addAll(list,urls); + Collections.addAll(list, urls); return list; } diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/UserRest.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/UserRest.java index 0e29d0d8..4ab8dfd9 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/UserRest.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/UserRest.java @@ -20,13 +20,14 @@ public class UserRest { @Autowired private PermissionService permissionService; - @RequestMapping(value = "/user/username/{username}",method = RequestMethod.GET, produces="application/json") - public @ResponseBody UserInfo getUserByUsername(@PathVariable("username")String username) { - return permissionService.getUserByUsername(username); - } - +// @RequestMapping(value = "/user/username/{username}",method = RequestMethod.GET, produces="application/json") +// public @ResponseBody UserInfo getUserByUsername(@PathVariable("username")String username) { +// return permissionService.getUserByUsername(username); +// } +// @RequestMapping(value = "/permissions", method = RequestMethod.GET) - public @ResponseBody List getAllPermission(){ + public @ResponseBody + List getAllPermission(){ return permissionService.getAllPermission(); } @@ -35,4 +36,11 @@ public class UserRest { public @ResponseBody List getPermissionByUsername(@PathVariable("username") String username){ return permissionService.getPermissionByUsername(username); } + + @RequestMapping(value = "/user/validate", method = RequestMethod.POST) + public @ResponseBody UserInfo validate(String username,String password){ + return permissionService.validate(username,password); + } + + } diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/service/PermissionService.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/service/PermissionService.java index 61c1d711..1ad58340 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/service/PermissionService.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/service/PermissionService.java @@ -17,6 +17,7 @@ import com.github.wxiaoqi.security.common.util.TreeUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -37,6 +38,8 @@ public class PermissionService { private ElementBiz elementBiz; @Autowired private UserAuthUtil userAuthUtil; + private BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(12); + public UserInfo getUserByUsername(String username) { UserInfo info = new UserInfo(); @@ -46,6 +49,16 @@ public class PermissionService { return info; } + public UserInfo validate(String username,String password){ + UserInfo info = new UserInfo(); + User user = userBiz.getUserByUsername(username); + if (encoder.matches(password, user.getPassword())) { + BeanUtils.copyProperties(user, info); + info.setId(user.getId().toString()); + } + return info; + } + public List getAllPermission() { List menus = menuBiz.selectListAll(); List result = new ArrayList(); diff --git a/ace-auth/ace-auth-client/src/main/java/com/github/wxiaoqi/security/auth/client/interceptor/ServiceFeignInterceptor.java b/ace-auth/ace-auth-client/src/main/java/com/github/wxiaoqi/security/auth/client/interceptor/ServiceFeignInterceptor.java index ff395749..df4e71fa 100644 --- a/ace-auth/ace-auth-client/src/main/java/com/github/wxiaoqi/security/auth/client/interceptor/ServiceFeignInterceptor.java +++ b/ace-auth/ace-auth-client/src/main/java/com/github/wxiaoqi/security/auth/client/interceptor/ServiceFeignInterceptor.java @@ -11,7 +11,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; /** - * Created by ace on 2017/9/15. + * + * @author ace + * @date 2017/9/15 */ public class ServiceFeignInterceptor implements RequestInterceptor { private Logger logger = LoggerFactory.getLogger(ServiceFeignInterceptor.class); @@ -23,9 +25,22 @@ public class ServiceFeignInterceptor implements RequestInterceptor { private ServiceAuthUtil serviceAuthUtil; + @Override public void apply(RequestTemplate requestTemplate) { requestTemplate.header(serviceAuthConfig.getTokenHeader(), serviceAuthUtil.getClientToken()); requestTemplate.header(userAuthConfig.getTokenHeader(), BaseContextHandler.getToken()); } + + public void setServiceAuthConfig(ServiceAuthConfig serviceAuthConfig) { + this.serviceAuthConfig = serviceAuthConfig; + } + + public void setUserAuthConfig(UserAuthConfig userAuthConfig) { + this.userAuthConfig = userAuthConfig; + } + + public void setServiceAuthUtil(ServiceAuthUtil serviceAuthUtil) { + this.serviceAuthUtil = serviceAuthUtil; + } } \ No newline at end of file diff --git a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/controller/AuthController.java b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/controller/AuthController.java index 9d503a9a..377a492c 100755 --- a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/controller/AuthController.java +++ b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/controller/AuthController.java @@ -1,9 +1,8 @@ package com.github.wxiaoqi.security.auth.controller; +import com.github.wxiaoqi.security.auth.service.AuthService; import com.github.wxiaoqi.security.auth.util.user.JwtAuthenticationRequest; import com.github.wxiaoqi.security.auth.util.user.JwtAuthenticationResponse; -import com.github.wxiaoqi.security.auth.service.AuthService; -import com.github.wxiaoqi.security.auth.vo.FrontUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; @@ -50,14 +49,4 @@ public class AuthController { authService.invalid(token); return ResponseEntity.ok(true); } - - @RequestMapping(value = "user", method = RequestMethod.GET) - public ResponseEntity getUserInfo(String token) throws Exception { - FrontUser userInfo = authService.getUserInfo(token); - if(userInfo==null) { - return ResponseEntity.status(401).body(false); - } else { - return ResponseEntity.ok(userInfo); - } - } } diff --git a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/feign/IUserService.java b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/feign/IUserService.java index a2cc1826..cb6f62ed 100644 --- a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/feign/IUserService.java +++ b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/feign/IUserService.java @@ -1,14 +1,11 @@ package com.github.wxiaoqi.security.auth.feign; -import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo; import com.github.wxiaoqi.security.api.vo.user.UserInfo; import com.github.wxiaoqi.security.auth.configuration.FeignConfiguration; import org.springframework.cloud.netflix.feign.FeignClient; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; - -import java.util.List; +import org.springframework.web.bind.annotation.RequestParam; /** @@ -19,10 +16,6 @@ import java.util.List; */ @FeignClient(value = "ace-admin",configuration = FeignConfiguration.class) public interface IUserService { - @RequestMapping(value = "/api/user/username/{username}", method = RequestMethod.GET) - public UserInfo getUserByUsername(@PathVariable("username") String username); - @RequestMapping(value = "/api/user/un/{username}/permissions", method = RequestMethod.GET) - public List getPermissionByUsername(@PathVariable("username") String username); - @RequestMapping(value = "/api/permissions", method = RequestMethod.GET) - List getAllPermissionInfo(); + @RequestMapping(value = "/api/user/validate", method = RequestMethod.POST) + public UserInfo validate(@RequestParam("username") String username, @RequestParam("password") String password); } diff --git a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/AuthService.java b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/AuthService.java index 5454fa9a..d7ebfacf 100755 --- a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/AuthService.java +++ b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/AuthService.java @@ -1,12 +1,10 @@ package com.github.wxiaoqi.security.auth.service; -import com.github.wxiaoqi.security.auth.vo.FrontUser; - public interface AuthService { String login(String username, String password) throws Exception; String refresh(String oldToken); void validate(String token) throws Exception; - FrontUser getUserInfo(String token) throws Exception; +// FrontUser getUserInfo(String token) throws Exception; Boolean invalid(String token); } diff --git a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java index d67421c3..41eb846c 100755 --- a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java +++ b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java @@ -1,21 +1,14 @@ package com.github.wxiaoqi.security.auth.service.impl; -import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo; import com.github.wxiaoqi.security.api.vo.user.UserInfo; -import com.github.wxiaoqi.security.auth.util.user.JwtTokenUtil; import com.github.wxiaoqi.security.auth.feign.IUserService; import com.github.wxiaoqi.security.auth.service.AuthService; -import com.github.wxiaoqi.security.auth.vo.FrontUser; -import com.github.wxiaoqi.security.common.constant.CommonConstants; +import com.github.wxiaoqi.security.auth.util.user.JwtTokenUtil; import com.github.wxiaoqi.security.common.util.jwt.JWTInfo; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; +import org.springframework.util.StringUtils; @Service public class AuthServiceImpl implements AuthService { @@ -34,9 +27,9 @@ public class AuthServiceImpl implements AuthService { @Override public String login(String username, String password) throws Exception { - UserInfo info = userService.getUserByUsername(username); + UserInfo info = userService.validate(username,password); String token = ""; - if (encoder.matches(password, info.getPassword())) { + if (!StringUtils.isEmpty(info.getId())) { token = jwtTokenUtil.generateToken(new JWTInfo(info.getUsername(), info.getId() + "", info.getName())); } return token; @@ -47,26 +40,26 @@ public class AuthServiceImpl implements AuthService { jwtTokenUtil.getInfoFromToken(token); } - @Override - public FrontUser getUserInfo(String token) throws Exception { - String username = jwtTokenUtil.getInfoFromToken(token).getUniqueName(); - if (username == null) { - return null; - } - UserInfo user = userService.getUserByUsername(username); - FrontUser frontUser = new FrontUser(); - BeanUtils.copyProperties(user, frontUser); - List permissionInfos = userService.getPermissionByUsername(username); - Stream menus = permissionInfos.parallelStream().filter((permission) -> { - return permission.getType().equals(CommonConstants.RESOURCE_TYPE_MENU); - }); - frontUser.setMenus(menus.collect(Collectors.toList())); - Stream elements = permissionInfos.parallelStream().filter((permission) -> { - return !permission.getType().equals(CommonConstants.RESOURCE_TYPE_MENU); - }); - frontUser.setElements(elements.collect(Collectors.toList())); - return frontUser; - } +// @Override +// public FrontUser getUserInfo(String token) throws Exception { +// String username = jwtTokenUtil.getInfoFromToken(token).getUniqueName(); +// if (username == null) { +// return null; +// } +// UserInfo user = userService.getUserByUsername(username); +// FrontUser frontUser = new FrontUser(); +// BeanUtils.copyProperties(user, frontUser); +// List permissionInfos = userService.getPermissionByUsername(username); +// Stream menus = permissionInfos.parallelStream().filter((permission) -> { +// return permission.getType().equals(CommonConstants.RESOURCE_TYPE_MENU); +// }); +// frontUser.setMenus(menus.collect(Collectors.toList())); +// Stream elements = permissionInfos.parallelStream().filter((permission) -> { +// return !permission.getType().equals(CommonConstants.RESOURCE_TYPE_MENU); +// }); +// frontUser.setElements(elements.collect(Collectors.toList())); +// return frontUser; +// } @Override public Boolean invalid(String token) { diff --git a/ace-gate/ace-gate-server/pom.xml b/ace-gate/ace-gate-server/pom.xml index a8cf3b86..67e87483 100644 --- a/ace-gate/ace-gate-server/pom.xml +++ b/ace-gate/ace-gate-server/pom.xml @@ -66,6 +66,11 @@ ace-gate-ratelimit 1.0-SNAPSHOT + + com.netflix.feign + feign-jackson + 8.18.0 + ace-gate diff --git a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/feign/IUserService.java b/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/feign/IUserService.java index 4d45ccc1..ead97e52 100644 --- a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/feign/IUserService.java +++ b/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/feign/IUserService.java @@ -1,12 +1,8 @@ package com.github.wxiaoqi.security.gate.feign; import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo; -import com.github.wxiaoqi.security.api.vo.user.UserInfo; -import com.github.wxiaoqi.security.gate.config.ZuulConfig; -import org.springframework.cloud.netflix.feign.FeignClient; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; +import feign.Param; +import feign.RequestLine; import java.util.List; @@ -17,13 +13,9 @@ import java.util.List; * @author wanghaobin * @create 2017-06-21 8:11 */ -@FeignClient(value = "ace-admin",configuration = {ZuulConfig.class}) -@RequestMapping("api") public interface IUserService { - @RequestMapping(value = "/user/username/{username}", method = RequestMethod.GET) - public UserInfo getUserByUsername(@PathVariable("username") String username); - @RequestMapping(value = "/user/un/{username}/permissions", method = RequestMethod.GET) - public List getPermissionByUsername(@PathVariable("username") String username); - @RequestMapping(value = "/permissions", method = RequestMethod.GET) + @RequestLine(value = "GET /api/user/un/{username}/permissions") + public List getPermissionByUsername(@Param("username") String username); + @RequestLine(value = "GET /api/permissions") List getAllPermissionInfo(); } diff --git a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/filter/AdminAccessFilter.java b/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/filter/AdminAccessFilter.java index 799aec15..749c5d8e 100644 --- a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/filter/AdminAccessFilter.java +++ b/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/filter/AdminAccessFilter.java @@ -3,9 +3,9 @@ package com.github.wxiaoqi.security.gate.filter; import com.alibaba.fastjson.JSON; import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo; import com.github.wxiaoqi.security.api.vo.log.LogInfo; -import com.github.wxiaoqi.security.api.vo.user.UserInfo; import com.github.wxiaoqi.security.auth.client.config.ServiceAuthConfig; import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; +import com.github.wxiaoqi.security.auth.client.interceptor.ServiceFeignInterceptor; import com.github.wxiaoqi.security.auth.client.jwt.ServiceAuthUtil; import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil; import com.github.wxiaoqi.security.common.context.BaseContextHandler; @@ -18,14 +18,20 @@ import com.github.wxiaoqi.security.gate.feign.IUserService; import com.github.wxiaoqi.security.gate.utils.DBLog; import com.google.common.base.Predicate; import com.google.common.collect.Collections2; +import com.netflix.appinfo.InstanceInfo; +import com.netflix.discovery.EurekaClient; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; +import feign.Feign; +import feign.jackson.JacksonDecoder; +import feign.jackson.JacksonEncoder; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; import java.net.URLEncoder; import java.util.Collection; @@ -43,7 +49,7 @@ import java.util.regex.Pattern; @Slf4j public class AdminAccessFilter extends ZuulFilter { - @Autowired +// @Autowired private IUserService userService; @Autowired private ILogService logService; @@ -65,6 +71,22 @@ public class AdminAccessFilter extends ZuulFilter { @Autowired private ServiceAuthUtil serviceAuthUtil; + @Autowired + private EurekaClient discoveryClient; + + @PostConstruct + public void init() { + InstanceInfo prodSvcInfo = discoveryClient.getNextServerFromEureka("ACE-ADMIN", false); + ServiceFeignInterceptor serviceFeignInterceptor = new ServiceFeignInterceptor(); + serviceFeignInterceptor.setServiceAuthConfig(serviceAuthConfig); + serviceFeignInterceptor.setServiceAuthUtil(serviceAuthUtil); + serviceFeignInterceptor.setUserAuthConfig(userAuthConfig); + this.userService = Feign.builder().encoder(new JacksonEncoder()) + .decoder(new JacksonDecoder()) + .requestInterceptor(serviceFeignInterceptor) + .target(IUserService.class, prodSvcInfo.getHomePageUrl()); + } + @Override public String filterType() { return "pre"; @@ -102,7 +124,7 @@ public class AdminAccessFilter extends ZuulFilter { // 判断资源是否启用权限约束 Collection result = getPermissionInfos(requestUri, method, permissionInfos); if(result.size()>0){ - checkAllow(requestUri, method, ctx, user.getUniqueName()); + checkUserPermission(requestUri, method, ctx, user); } // 申请客户端密钥头 ctx.addZuulRequestHeader(serviceAuthConfig.getTokenHeader(),serviceAuthUtil.getClientToken()); @@ -130,13 +152,12 @@ public class AdminAccessFilter extends ZuulFilter { }); } - private void setCurrentUserInfoAndLog(RequestContext ctx, String username, PermissionInfo pm) { - UserInfo info = userService.getUserByUsername(username); + private void setCurrentUserInfoAndLog(RequestContext ctx, IJWTInfo user, PermissionInfo pm) { String host = ClientUtil.getClientIp(ctx.getRequest()); - ctx.addZuulRequestHeader("userId", info.getId()); - ctx.addZuulRequestHeader("userName", URLEncoder.encode(info.getName())); + ctx.addZuulRequestHeader("userId", user.getId()); + ctx.addZuulRequestHeader("userName", URLEncoder.encode(user.getName())); ctx.addZuulRequestHeader("userHost", ClientUtil.getClientIp(ctx.getRequest())); - LogInfo logInfo = new LogInfo(pm.getMenu(),pm.getName(),pm.getUri(),new Date(),info.getId(),info.getName(),host); + LogInfo logInfo = new LogInfo(pm.getMenu(),pm.getName(),pm.getUri(),new Date(),user.getId(),user.getName(),host); DBLog.getInstance().setLogService(logService).offerQueue(logInfo); } @@ -178,9 +199,9 @@ public class AdminAccessFilter extends ZuulFilter { * @param requestUri * @param method */ - private void checkAllow(final String requestUri, final String method ,RequestContext ctx,String username) { + private void checkUserPermission(final String requestUri, final String method ,RequestContext ctx,IJWTInfo user) { log.debug("uri:" + requestUri + "----method:" + method); - List permissionInfos = getPermissionInfos(ctx.getRequest(), username) ; + List permissionInfos = getPermissionInfos(ctx.getRequest(), user.getUniqueName()) ; Collection result = getPermissionInfos(requestUri, method, permissionInfos); if (result.size() <= 0) { setFailedRequest(JSON.toJSONString(new TokenForbiddenResponse("Token Forbidden!")), 200); @@ -188,7 +209,7 @@ public class AdminAccessFilter extends ZuulFilter { PermissionInfo[] pms = result.toArray(new PermissionInfo[]{}); PermissionInfo pm = pms[0]; if(!"GET".equals(method)){ - setCurrentUserInfoAndLog(ctx, username, pm); + setCurrentUserInfoAndLog(ctx, user, pm); } } } -- Gitee From 9d11a63e17aa91fc27bee5ad375285b6ef0d225f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B5=A9=E5=BD=AC?= Date: Thu, 16 Nov 2017 09:17:25 +0800 Subject: [PATCH 07/10] =?UTF-8?q?[Feature]=20=E5=A2=9E=E5=8A=A0=E7=A9=BA?= =?UTF-8?q?=E6=9E=84=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/client/interceptor/ServiceFeignInterceptor.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ace-auth/ace-auth-client/src/main/java/com/github/wxiaoqi/security/auth/client/interceptor/ServiceFeignInterceptor.java b/ace-auth/ace-auth-client/src/main/java/com/github/wxiaoqi/security/auth/client/interceptor/ServiceFeignInterceptor.java index df4e71fa..12b0a2dd 100644 --- a/ace-auth/ace-auth-client/src/main/java/com/github/wxiaoqi/security/auth/client/interceptor/ServiceFeignInterceptor.java +++ b/ace-auth/ace-auth-client/src/main/java/com/github/wxiaoqi/security/auth/client/interceptor/ServiceFeignInterceptor.java @@ -24,6 +24,8 @@ public class ServiceFeignInterceptor implements RequestInterceptor { @Autowired private ServiceAuthUtil serviceAuthUtil; + public ServiceFeignInterceptor() { + } @Override -- Gitee From b7a79e7c22872fd622d4f6e6ed2fce0f7bf9f02b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B5=A9=E5=BD=AC?= Date: Thu, 16 Nov 2017 21:37:20 +0800 Subject: [PATCH 08/10] =?UTF-8?q?[Feature]=20=E9=9B=86=E6=88=90ace-cache?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ace-admin/pom.xml | 15 +++ .../security/admin/AdminBootstrap.java | 4 + .../security/admin/biz/ElementBiz.java | 21 ++++ .../wxiaoqi/security/admin/biz/GroupBiz.java | 95 +++++++++++-------- .../wxiaoqi/security/admin/biz/MenuBiz.java | 46 ++++++--- .../wxiaoqi/security/admin/biz/UserBiz.java | 7 +- .../security/admin/config/WebConfig.java | 14 ++- .../admin/rest/ElementController.java | 7 +- .../wxiaoqi/security/admin/rpc/UserRest.java | 6 -- ace-admin/src/main/resources/application.yml | 17 +++- .../security/common/msg/ListRestResponse.java | 21 ---- .../security/common/rest/BaseController.java | 14 +-- .../wxiaoqi/security/gate/vo/FrontUser.java | 74 --------------- 13 files changed, 170 insertions(+), 171 deletions(-) delete mode 100644 ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/vo/FrontUser.java diff --git a/ace-admin/pom.xml b/ace-admin/pom.xml index 9e9f1d1f..a6198164 100644 --- a/ace-admin/pom.xml +++ b/ace-admin/pom.xml @@ -157,6 +157,21 @@ ace-auth-client 1.0-SNAPSHOT + + com.github.wxiaoqi + ace-cache + 0.0.2-SNAPSHOT + + + org.webjars + jquery + 2.1.4 + + + org.webjars + bootstrap + 3.1.0 + ace-admin diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/AdminBootstrap.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/AdminBootstrap.java index 70297eb5..4b927c7c 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/AdminBootstrap.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/AdminBootstrap.java @@ -7,6 +7,8 @@ import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.scheduling.annotation.EnableScheduling; /** @@ -22,6 +24,8 @@ import org.springframework.scheduling.annotation.EnableScheduling; @EnableScheduling @EnableAceAuthClient @ServletComponentScan("com.github.wxiaoqi.security.admin.config.druid") +@ComponentScan({"com.ace.cache","com.github.wxiaoqi.security.admin"}) +@EnableAspectJAutoProxy public class AdminBootstrap { public static void main(String[] args) { new SpringApplicationBuilder(AdminBootstrap.class).web(true).run(args); } diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/ElementBiz.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/ElementBiz.java index 9e98aa53..c44e4a97 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/ElementBiz.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/ElementBiz.java @@ -1,5 +1,7 @@ package com.github.wxiaoqi.security.admin.biz; +import com.ace.cache.annotation.Cache; +import com.ace.cache.annotation.CacheClear; import com.github.wxiaoqi.security.admin.entity.Element; import com.github.wxiaoqi.security.admin.mapper.ElementMapper; import com.github.wxiaoqi.security.common.biz.BaseBiz; @@ -15,10 +17,29 @@ import java.util.List; */ @Service public class ElementBiz extends BaseBiz { + @Cache(key="permission:ele:u{1}") public List getAuthorityElementByUserId(String userId){ return mapper.selectAuthorityElementByUserId(userId); } public List getAuthorityElementByUserId(String userId,String menuId){ return mapper.selectAuthorityMenuElementByUserId(userId,menuId); } + + @Override + @Cache(key="permission:ele") + public List selectListAll() { + return super.selectListAll(); + } + + @Override + @CacheClear(pre="permission:ele") + public void insertSelective(Element entity) { + super.insertSelective(entity); + } + + @Override + @CacheClear(pre="permission:ele") + public void updateSelectiveById(Element entity) { + super.updateSelectiveById(entity); + } } diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java index 162077b8..eb60a639 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java @@ -1,19 +1,20 @@ package com.github.wxiaoqi.security.admin.biz; +import com.ace.cache.annotation.CacheClear; import com.github.wxiaoqi.security.admin.constant.AdminCommonConstant; -import com.github.wxiaoqi.security.admin.entity.*; import com.github.wxiaoqi.security.admin.entity.Group; +import com.github.wxiaoqi.security.admin.entity.Menu; +import com.github.wxiaoqi.security.admin.entity.ResourceAuthority; import com.github.wxiaoqi.security.admin.mapper.GroupMapper; import com.github.wxiaoqi.security.admin.mapper.MenuMapper; import com.github.wxiaoqi.security.admin.mapper.ResourceAuthorityMapper; import com.github.wxiaoqi.security.admin.mapper.UserMapper; import com.github.wxiaoqi.security.admin.vo.AuthorityMenuTree; import com.github.wxiaoqi.security.admin.vo.GroupUsers; +import com.github.wxiaoqi.security.common.biz.BaseBiz; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - -import com.github.wxiaoqi.security.common.biz.BaseBiz; import org.springframework.util.StringUtils; import java.util.*; @@ -25,110 +26,118 @@ import java.util.*; * @create 2017-06-12 8:48 */ @Service -public class GroupBiz extends BaseBiz{ +public class GroupBiz extends BaseBiz { @Autowired private UserMapper userMapper; @Autowired private ResourceAuthorityMapper resourceAuthorityMapper; @Autowired private MenuMapper menuMapper; + @Override public void insertSelective(Group entity) { - if(AdminCommonConstant.ROOT == entity.getParentId()){ - entity.setPath("/"+entity.getCode()); - }else{ + if (AdminCommonConstant.ROOT == entity.getParentId()) { + entity.setPath("/" + entity.getCode()); + } else { Group parent = this.selectById(entity.getParentId()); - entity.setPath(parent.getPath()+"/"+entity.getCode()); + entity.setPath(parent.getPath() + "/" + entity.getCode()); } super.insertSelective(entity); } @Override public void updateById(Group entity) { - if(AdminCommonConstant.ROOT == entity.getParentId()){ - entity.setPath("/"+entity.getCode()); - }else{ + if (AdminCommonConstant.ROOT == entity.getParentId()) { + entity.setPath("/" + entity.getCode()); + } else { Group parent = this.selectById(entity.getParentId()); - entity.setPath(parent.getPath()+"/"+entity.getCode()); + entity.setPath(parent.getPath() + "/" + entity.getCode()); } super.updateById(entity); } /** * 获取群组关联用户 + * * @param groupId * @return */ public GroupUsers getGroupUsers(int groupId) { - return new GroupUsers(userMapper.selectMemberByGroupId(groupId),userMapper.selectLeaderByGroupId(groupId)); + return new GroupUsers(userMapper.selectMemberByGroupId(groupId), userMapper.selectLeaderByGroupId(groupId)); } /** * 变更群主所分配用户 + * * @param groupId * @param members * @param leaders */ - public void modifyGroupUsers(int groupId, String members, String leaders){ + @CacheClear(pre = "permission") + public void modifyGroupUsers(int groupId, String members, String leaders) { mapper.deleteGroupLeadersById(groupId); mapper.deleteGroupMembersById(groupId); - if(!StringUtils.isEmpty(members)){ + if (!StringUtils.isEmpty(members)) { String[] mem = members.split(","); - for(String m:mem){ - mapper.insertGroupMembersById(groupId,Integer.parseInt(m)); + for (String m : mem) { + mapper.insertGroupMembersById(groupId, Integer.parseInt(m)); } } - if(!StringUtils.isEmpty(leaders)){ + if (!StringUtils.isEmpty(leaders)) { String[] mem = leaders.split(","); - for(String m:mem){ - mapper.insertGroupLeadersById(groupId,Integer.parseInt(m)); + for (String m : mem) { + mapper.insertGroupLeadersById(groupId, Integer.parseInt(m)); } } } /** * 变更群组关联的菜单 + * * @param groupId * @param menus */ - public void modifyAuthorityMenu(int groupId, String[] menus){ - resourceAuthorityMapper.deleteByAuthorityIdAndResourceType(groupId+"", AdminCommonConstant.RESOURCE_TYPE_MENU); + @CacheClear(pre = "permission:menu") + public void modifyAuthorityMenu(int groupId, String[] menus) { + resourceAuthorityMapper.deleteByAuthorityIdAndResourceType(groupId + "", AdminCommonConstant.RESOURCE_TYPE_MENU); List menuList = menuMapper.selectAll(); - Map map = new HashMap(); - for(Menu menu:menuList){ - map.put(menu.getId().toString(),menu.getParentId().toString()); + Map map = new HashMap(); + for (Menu menu : menuList) { + map.put(menu.getId().toString(), menu.getParentId().toString()); } Set relationMenus = new HashSet(); relationMenus.addAll(Arrays.asList(menus)); ResourceAuthority authority = null; - for(String menuId:menus){ - findParentID(map,relationMenus,menuId); + for (String menuId : menus) { + findParentID(map, relationMenus, menuId); } - for(String menuId:relationMenus){ + for (String menuId : relationMenus) { authority = new ResourceAuthority(AdminCommonConstant.AUTHORITY_TYPE_GROUP, AdminCommonConstant.RESOURCE_TYPE_MENU); - authority.setAuthorityId(groupId+""); + authority.setAuthorityId(groupId + ""); authority.setResourceId(menuId); authority.setParentId("-1"); resourceAuthorityMapper.insertSelective(authority); } } - private void findParentID(Map map,Set relationMenus,String id){ + private void findParentID(Map map, Set relationMenus, String id) { String parentId = map.get(id); - if(String.valueOf(AdminCommonConstant.ROOT).equals(id)){ - return ; + if (String.valueOf(AdminCommonConstant.ROOT).equals(id)) { + return; } relationMenus.add(parentId); - findParentID(map,relationMenus,parentId); + findParentID(map, relationMenus, parentId); } /** * 分配资源权限 + * * @param groupId * @param menuId * @param elementId */ - public void modifyAuthorityElement(int groupId,int menuId,int elementId){ + @CacheClear(pre = "permission:ele") + public void modifyAuthorityElement(int groupId, int menuId, int elementId) { ResourceAuthority authority = new ResourceAuthority(AdminCommonConstant.AUTHORITY_TYPE_GROUP, AdminCommonConstant.RESOURCE_TYPE_BTN); authority.setAuthorityId(groupId + ""); authority.setResourceId(elementId + ""); @@ -138,13 +147,15 @@ public class GroupBiz extends BaseBiz{ /** * 移除资源权限 + * * @param groupId * @param menuId * @param elementId */ + @CacheClear(pre = "permission:ele") public void removeAuthorityElement(int groupId, int menuId, int elementId) { ResourceAuthority authority = new ResourceAuthority(); - authority.setAuthorityId(groupId+""); + authority.setAuthorityId(groupId + ""); authority.setResourceId(elementId + ""); authority.setParentId("-1"); resourceAuthorityMapper.delete(authority); @@ -153,10 +164,11 @@ public class GroupBiz extends BaseBiz{ /** * 获取群主关联的菜单 + * * @param groupId * @return */ - public List getAuthorityMenu(int groupId){ + public List getAuthorityMenu(int groupId) { List menus = menuMapper.selectMenuByAuthorityId(String.valueOf(groupId), AdminCommonConstant.AUTHORITY_TYPE_GROUP); List trees = new ArrayList(); AuthorityMenuTree node = null; @@ -169,13 +181,18 @@ public class GroupBiz extends BaseBiz{ return trees; } - + /** + * 获取群组关联的资源 + * + * @param groupId + * @return + */ public List getAuthorityElement(int groupId) { ResourceAuthority authority = new ResourceAuthority(AdminCommonConstant.AUTHORITY_TYPE_GROUP, AdminCommonConstant.RESOURCE_TYPE_BTN); - authority.setAuthorityId(groupId+""); + authority.setAuthorityId(groupId + ""); List authorities = resourceAuthorityMapper.select(authority); List ids = new ArrayList(); - for(ResourceAuthority auth:authorities){ + for (ResourceAuthority auth : authorities) { ids.add(Integer.parseInt(auth.getResourceId())); } return ids; diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/MenuBiz.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/MenuBiz.java index ddb16112..6da6f46d 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/MenuBiz.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/MenuBiz.java @@ -1,10 +1,12 @@ package com.github.wxiaoqi.security.admin.biz; +import com.ace.cache.annotation.Cache; +import com.ace.cache.annotation.CacheClear; +import com.github.wxiaoqi.security.admin.constant.AdminCommonConstant; import com.github.wxiaoqi.security.admin.entity.Menu; +import com.github.wxiaoqi.security.admin.mapper.MenuMapper; import com.github.wxiaoqi.security.common.biz.BaseBiz; -import com.github.wxiaoqi.security.admin.constant.AdminCommonConstant; import org.springframework.stereotype.Service; -import com.github.wxiaoqi.security.admin.mapper.MenuMapper; import java.util.List; @@ -15,43 +17,61 @@ import java.util.List; * @create 2017-06-12 8:48 */ @Service -public class MenuBiz extends BaseBiz { +public class MenuBiz extends BaseBiz { @Override + @Cache(key="permission:menu") + public List selectListAll() { + return super.selectListAll(); + } + + @Override + @CacheClear(pre="permission:menu") public void insertSelective(Menu entity) { - if(AdminCommonConstant.ROOT == entity.getParentId()){ - entity.setPath("/"+entity.getCode()); - }else{ + if (AdminCommonConstant.ROOT == entity.getParentId()) { + entity.setPath("/" + entity.getCode()); + } else { Menu parent = this.selectById(entity.getParentId()); - entity.setPath(parent.getPath()+"/"+entity.getCode()); + entity.setPath(parent.getPath() + "/" + entity.getCode()); } super.insertSelective(entity); } @Override + @CacheClear(pre="permission:menu") public void updateById(Menu entity) { - if(AdminCommonConstant.ROOT == entity.getParentId()){ - entity.setPath("/"+entity.getCode()); - }else{ + if (AdminCommonConstant.ROOT == entity.getParentId()) { + entity.setPath("/" + entity.getCode()); + } else { Menu parent = this.selectById(entity.getParentId()); - entity.setPath(parent.getPath()+"/"+entity.getCode()); + entity.setPath(parent.getPath() + "/" + entity.getCode()); } super.updateById(entity); } + + @Override + @CacheClear(pre="permission:menu") + public void updateSelectiveById(Menu entity) { + super.updateSelectiveById(entity); + } + /** * 获取用户可以访问的菜单 + * * @param id * @return */ - public List getUserAuthorityMenuByUserId(int id){ + @Cache(key = "permission:menu:u{1}") + public List getUserAuthorityMenuByUserId(int id) { return mapper.selectAuthorityMenuByUserId(id); } /** * 根据用户获取可以访问的系统 + * * @param id * @return */ - public List getUserAuthoritySystemByUserId(int id){ + public List getUserAuthoritySystemByUserId(int id) { return mapper.selectAuthoritySystemByUserId(id); } } diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/UserBiz.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/UserBiz.java index 65b4cdad..ea2c7cea 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/UserBiz.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/UserBiz.java @@ -1,5 +1,7 @@ package com.github.wxiaoqi.security.admin.biz; +import com.ace.cache.annotation.Cache; +import com.ace.cache.annotation.CacheClear; import com.github.wxiaoqi.security.admin.entity.User; import com.github.wxiaoqi.security.admin.mapper.MenuMapper; import com.github.wxiaoqi.security.admin.mapper.UserMapper; @@ -31,10 +33,8 @@ public class UserBiz extends BaseBiz { } @Override + @CacheClear(pre="user{1.username}") public void updateSelectiveById(User entity) { - -// String password = new BCryptPasswordEncoder(UserConstant.PW_ENCORDER_SALT).encode(entity.getPassword()); -// entity.setPassword(password); super.updateSelectiveById(entity); } @@ -43,6 +43,7 @@ public class UserBiz extends BaseBiz { * @param username * @return */ + @Cache(key="user{1}") public User getUserByUsername(String username){ User user = new User(); user.setUsername(username); diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/WebConfig.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/WebConfig.java index eb728ad6..1f6b1f29 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/WebConfig.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/config/WebConfig.java @@ -5,7 +5,9 @@ import com.github.wxiaoqi.security.auth.client.interceptor.UserAuthRestIntercept import com.github.wxiaoqi.security.common.handler.GlobalExceptionHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import java.util.ArrayList; @@ -14,7 +16,8 @@ import java.util.Collections; /** * Created by ace on 2017/9/8. */ -@Configuration +@Configuration("admimWebConfig") +@Primary public class WebConfig extends WebMvcConfigurerAdapter { @Bean GlobalExceptionHandler getGlobalExceptionHandler() { @@ -44,10 +47,17 @@ public class WebConfig extends WebMvcConfigurerAdapter { ArrayList list = new ArrayList<>(); String[] urls = { "/v2/api-docs", - "/swagger-resources/**" + "/swagger-resources/**", + "/cache/**" }; Collections.addAll(list, urls); return list; + } + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/static/cache/**").addResourceLocations( + "classpath:/META-INF/static/"); + super.addResourceHandlers(registry); } } diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/ElementController.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/ElementController.java index b2e7fa76..1dfb742d 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/ElementController.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/ElementController.java @@ -1,11 +1,8 @@ package com.github.wxiaoqi.security.admin.rest; -import com.github.pagehelper.PageHelper; import com.github.wxiaoqi.security.admin.biz.ElementBiz; import com.github.wxiaoqi.security.admin.biz.UserBiz; import com.github.wxiaoqi.security.admin.entity.Element; -import com.github.wxiaoqi.security.admin.entity.User; -import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.TableResultResponse; import com.github.wxiaoqi.security.common.rest.BaseController; @@ -51,7 +48,7 @@ public class ElementController extends BaseController { public ObjectRestResponse getAuthorityElement(String menuId) { int userId = userBiz.getUserByUsername(getCurrentUserName()).getId(); List elements = baseBiz.getAuthorityElementByUserId(userId + "",menuId); - return new ObjectRestResponse>().rel(true).data(elements); + return new ObjectRestResponse>().data(elements); } @RequestMapping(value = "/user/menu", method = RequestMethod.GET) @@ -59,6 +56,6 @@ public class ElementController extends BaseController { public ObjectRestResponse getAuthorityElement() { int userId = userBiz.getUserByUsername(getCurrentUserName()).getId(); List elements = baseBiz.getAuthorityElementByUserId(userId + ""); - return new ObjectRestResponse>().rel(true).data(elements); + return new ObjectRestResponse>().data(elements); } } diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/UserRest.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/UserRest.java index 4ab8dfd9..78f0ad20 100644 --- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/UserRest.java +++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/UserRest.java @@ -20,18 +20,12 @@ public class UserRest { @Autowired private PermissionService permissionService; -// @RequestMapping(value = "/user/username/{username}",method = RequestMethod.GET, produces="application/json") -// public @ResponseBody UserInfo getUserByUsername(@PathVariable("username")String username) { -// return permissionService.getUserByUsername(username); -// } -// @RequestMapping(value = "/permissions", method = RequestMethod.GET) public @ResponseBody List getAllPermission(){ return permissionService.getAllPermission(); } - @RequestMapping(value = "/user/un/{username}/permissions", method = RequestMethod.GET) public @ResponseBody List getPermissionByUsername(@PathVariable("username") String username){ return permissionService.getPermissionByUsername(username); diff --git a/ace-admin/src/main/resources/application.yml b/ace-admin/src/main/resources/application.yml index e193c367..fca69ea3 100644 --- a/ace-admin/src/main/resources/application.yml +++ b/ace-admin/src/main/resources/application.yml @@ -1,6 +1,6 @@ logging: level: - tk.mybatis: DEBUG +# tk.mybatis: DEBUG com.github.wxiaoqi.security.admin: DEBUG spring: application: @@ -70,3 +70,18 @@ auth: token-header: client-token pub-key: path: client/pub.key + +#redis-cache 相关 +redis: + pool: + maxActive: 300 + maxIdle: 100 + maxWait: 1000 + host: 127.0.0.1 + port: 6379 + password: + timeout: 2000 + # 服务或应用名 + sysName: ace-admin + enable: true + database: 0 \ No newline at end of file diff --git a/ace-common/src/main/java/com/github/wxiaoqi/security/common/msg/ListRestResponse.java b/ace-common/src/main/java/com/github/wxiaoqi/security/common/msg/ListRestResponse.java index d8f54259..07fc3c4c 100644 --- a/ace-common/src/main/java/com/github/wxiaoqi/security/common/msg/ListRestResponse.java +++ b/ace-common/src/main/java/com/github/wxiaoqi/security/common/msg/ListRestResponse.java @@ -7,27 +7,11 @@ package com.github.wxiaoqi.security.common.msg; * @create 2017-06-09 7:32 */ public class ListRestResponse { - boolean rel; String msg; T result; int count; - String callback; - public String getCallback() { - return callback; - } - public void setCallback(String callback) { - this.callback = callback; - } - - public boolean isRel() { - return rel; - } - - public void setRel(boolean rel) { - this.rel = rel; - } public String getMsg() { return msg; @@ -63,11 +47,6 @@ public class ListRestResponse { return this; } - public ListRestResponse rel(boolean rel) { - this.setRel(rel); - return this; - } - public ListRestResponse msg(String msg) { this.setMsg(msg); return this; diff --git a/ace-common/src/main/java/com/github/wxiaoqi/security/common/rest/BaseController.java b/ace-common/src/main/java/com/github/wxiaoqi/security/common/rest/BaseController.java index a2dae2a9..0c58f311 100644 --- a/ace-common/src/main/java/com/github/wxiaoqi/security/common/rest/BaseController.java +++ b/ace-common/src/main/java/com/github/wxiaoqi/security/common/rest/BaseController.java @@ -5,13 +5,10 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.TableResultResponse; import com.github.wxiaoqi.security.common.util.Query; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.security.SecurityProperties; import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; -import tk.mybatis.mapper.entity.Example; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; import java.util.List; import java.util.Map; @@ -31,26 +28,29 @@ public class BaseController { @ResponseBody public ObjectRestResponse add(@RequestBody Entity entity){ baseBiz.insertSelective(entity); - return new ObjectRestResponse().rel(true); + return new ObjectRestResponse(); } @RequestMapping(value = "/{id}",method = RequestMethod.GET) @ResponseBody public ObjectRestResponse get(@PathVariable int id){ - return new ObjectRestResponse().rel(true).data(baseBiz.selectById(id)); + ObjectRestResponse entityObjectRestResponse = new ObjectRestResponse<>(); + Object o = baseBiz.selectById(id); + entityObjectRestResponse.data((Entity)o); + return entityObjectRestResponse; } @RequestMapping(value = "/{id}",method = RequestMethod.PUT) @ResponseBody public ObjectRestResponse update(@RequestBody Entity entity){ baseBiz.updateSelectiveById(entity); - return new ObjectRestResponse().rel(true); + return new ObjectRestResponse(); } @RequestMapping(value = "/{id}",method = RequestMethod.DELETE) @ResponseBody public ObjectRestResponse remove(@PathVariable int id){ baseBiz.deleteById(id); - return new ObjectRestResponse().rel(true); + return new ObjectRestResponse(); } @RequestMapping(value = "/all",method = RequestMethod.GET) diff --git a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/vo/FrontUser.java b/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/vo/FrontUser.java deleted file mode 100644 index 3386c2ea..00000000 --- a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/vo/FrontUser.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.github.wxiaoqi.security.gate.vo; - -import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo; - -import java.util.List; - -/** - * Created by ace on 2017/8/22. - */ -public class FrontUser { - public String id; - public String username; - public String name; - private String description; - private String image; - private List menus; - private List elements; - public String getImage() { - return image; - } - - public void setImage(String image) { - this.image = image; - } - - - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getUsername() { - return username; - } - - public void setUsername(String username) { - this.username = username; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - public List getMenus() { - return menus; - } - - public void setMenus(List menus) { - this.menus = menus; - } - - public List getElements() { - return elements; - } - - public void setElements(List elements) { - this.elements = elements; - } -} -- Gitee From 24dd0e58c763a5e269bcc6ca978617a7865aae1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B5=A9=E5=BD=AC?= Date: Fri, 17 Nov 2017 08:26:20 +0800 Subject: [PATCH 09/10] =?UTF-8?q?[Feature]=20=E8=A7=A3=E5=86=B32.2?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/auth/service/AuthService.java | 4 ---- .../auth/service/impl/AuthServiceImpl.java | 2 +- .../wxiaoqi/security/gate/config/ZuulConfig.java | 15 --------------- .../security/gate/filter/AdminAccessFilter.java | 1 - 4 files changed, 1 insertion(+), 21 deletions(-) delete mode 100644 ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/config/ZuulConfig.java diff --git a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/AuthService.java b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/AuthService.java index 2a3bb959..b850ff93 100755 --- a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/AuthService.java +++ b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/AuthService.java @@ -5,9 +5,5 @@ public interface AuthService { String login(String username, String password) throws Exception; String refresh(String oldToken); void validate(String token) throws Exception; -<<<<<<< HEAD -// FrontUser getUserInfo(String token) throws Exception; -======= ->>>>>>> v2.2-SNAPSHOT Boolean invalid(String token); } diff --git a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java index 53f48604..c904ae8c 100755 --- a/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java +++ b/ace-auth/ace-auth-server/src/main/java/com/github/wxiaoqi/security/auth/service/impl/AuthServiceImpl.java @@ -1,10 +1,10 @@ package com.github.wxiaoqi.security.auth.service.impl; import com.github.wxiaoqi.security.api.vo.user.UserInfo; +import com.github.wxiaoqi.security.auth.common.util.jwt.JWTInfo; import com.github.wxiaoqi.security.auth.feign.IUserService; import com.github.wxiaoqi.security.auth.service.AuthService; import com.github.wxiaoqi.security.auth.util.user.JwtTokenUtil; -import com.github.wxiaoqi.security.common.util.jwt.JWTInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; diff --git a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/config/ZuulConfig.java b/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/config/ZuulConfig.java deleted file mode 100644 index de80468c..00000000 --- a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/config/ZuulConfig.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.github.wxiaoqi.security.gate.config; - -import com.github.wxiaoqi.security.auth.client.interceptor.ServiceFeignInterceptor; -import org.springframework.context.annotation.Bean; - -/** - * Created by ace on 2017/9/12. - */ -//@Configuration -public class ZuulConfig { - @Bean - ServiceFeignInterceptor getClientTokenInterceptor(){ - return new ServiceFeignInterceptor(); - } -} diff --git a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/filter/AdminAccessFilter.java b/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/filter/AdminAccessFilter.java index e98d8714..e790c7f3 100644 --- a/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/filter/AdminAccessFilter.java +++ b/ace-gate/ace-gate-server/src/main/java/com/github/wxiaoqi/security/gate/filter/AdminAccessFilter.java @@ -49,7 +49,6 @@ import java.util.regex.Pattern; @Slf4j public class AdminAccessFilter extends ZuulFilter { -// @Autowired private IUserService userService; @Autowired private ILogService logService; -- Gitee From 063b37c6958686dc79875d1daee5815873f500a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B5=A9=E5=BD=AC?= Date: Fri, 17 Nov 2017 08:36:08 +0800 Subject: [PATCH 10/10] =?UTF-8?q?[Feature]=20=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ace-admin集成`ace-cache` ace-auth集成`rabbitmq` --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7c765e73..c1c63742 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,13 @@ https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ryr8l --------- +# 更新日志 +### 2017年11月17日 v2.2-SNARSHOT + +- ace-admin集成`ace-cache` +- ace-auth集成`rabbitmq` + + # 模块说明 ![img](http://upload-images.jianshu.io/upload_images/5700335-5ceb4c68e4080107.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) @@ -49,14 +56,14 @@ https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ryr8l 下载完后端代码后,记得先安装`lombok插件`,否则你的IDE会报代码缺失。 ## 后端工程启动 ### 环境须知 -- mysql数据库一个,redis数据库一个 +- mysql一个,redis一个,rabbitmq一个 - jdk1.8 - IDE插件一个,`lombok插件`,具体百度即可 ### 运行步骤 - 运行数据库脚本:依次运行数据库:ace-admin/db/init.sql、ace-auth-server/db/init.sql - 修改配置数据库配置:ace-admin/src/main/resources/application.yml、ace-gate/src/main/resources/application.yml -- 依次运行main类:CenterBootstrap(ace-center)、ConfigServerBootstrap(ace-config)、GateBootstrap(ace-gate)、AdminBootstrap(ace-admin)、AuthBootstrap(ace-auth-server) +- 按`顺序`运行main类:CenterBootstrap(ace-center)、ConfigServerBootstrap(ace-config)、AdminBootstrap(ace-admin)、AuthBootstrap(ace-auth-server)、GateBootstrap(ace-gate) ### 项目结构 ``` -- Gitee