From 4b6dec13d0a11abfb8c00d3d8c626880ad5a98b4 Mon Sep 17 00:00:00 2001
From: b2baccline <23131013+b2baccline@users.noreply.github.com>
Date: Fri, 22 Nov 2019 18:38:57 +0800
Subject: [PATCH] =?UTF-8?q?1.=20=E8=8F=9C=E5=8D=95=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E5=A4=96=E9=83=A8=E8=B7=B3=E8=BD=AC=202.=20=E4=BF=AE=E6=94=B9?=
=?UTF-8?q?=E8=AE=BF=E9=97=AE=E6=97=A5=E5=BF=97=E8=BF=87=E6=BB=A4=E5=99=A8?=
=?UTF-8?q?=EF=BC=8C=E6=8E=92=E9=99=A4=E7=9B=91=E6=8E=A7=E8=AF=B7=E6=B1=82?=
=?UTF-8?q?=203.=20Swagger=20=E5=AE=89=E5=85=A8=E9=AA=8C=E8=AF=81Oauth2?=
=?UTF-8?q?=E6=A8=A1=E5=BC=8F=E6=94=AF=E6=8C=81=EF=BC=8C=E8=BF=BD=E5=8A=A0?=
=?UTF-8?q?test=E5=AE=A2=E6=88=B7=E7=AB=AF=EF=BC=8C=E7=94=A8=E4=BA=8E?=
=?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95=EF=BC=8C=E8=B7=B3=E8=BF=87?=
=?UTF-8?q?=E5=AF=86=E7=A0=81=E5=8A=A0=E5=AF=86=E7=8E=AF=E8=8A=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ballcat-admin/pom.xml | 5 +++
.../sys/model/entity/SysPermission.java | 5 +++
.../modules/sys/model/vo/PermissionVO.java | 5 +++
.../admin/modules/sys/model/vo/Router.java | 5 +++
.../filter/LoginPasswordDecoderFilter.java | 21 +++++++++--
.../src/main/resources/application.yml | 37 +++++++++++--------
.../main/resources/template/permission.sql.vm | 4 ++
.../common/conf/config/FilterConfig.java | 4 +-
.../log/access/filter/AccessLogFilter.java | 7 ++++
ballcat-common/ballcat-common-swagger/pom.xml | 11 ++++++
.../common/swagger/SwaggerConfiguration.java | 7 ++--
.../common/swagger/SwaggerProperties.java | 4 --
.../monitor/security/AuthHeaderProvider.java | 4 +-
.../src/main/resources/application.yml | 5 ++-
doc/2ballcat.sql | 36 +++++++++---------
pom.xml | 2 +-
16 files changed, 113 insertions(+), 49 deletions(-)
diff --git a/ballcat-admin/pom.xml b/ballcat-admin/pom.xml
index 4525079c..5e393bd7 100644
--- a/ballcat-admin/pom.xml
+++ b/ballcat-admin/pom.xml
@@ -40,6 +40,11 @@
knife4j-spring-ui
1.9.6
+
+ io.springfox
+ springfox-swagger-ui
+ 2.9.2
+
com.baomidou
diff --git a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysPermission.java b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysPermission.java
index 2d2b1112..d383c730 100644
--- a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysPermission.java
+++ b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysPermission.java
@@ -63,6 +63,11 @@ public class SysPermission extends Model {
*/
@ApiModelProperty(value="重定向地址")
private String redirect;
+ /**
+ * 链接跳转目标
+ */
+ @ApiModelProperty(value="链接跳转目标")
+ private String target;
/**
* 父菜单ID
*/
diff --git a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/PermissionVO.java b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/PermissionVO.java
index 1cb44efa..18bd6eca 100644
--- a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/PermissionVO.java
+++ b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/PermissionVO.java
@@ -48,6 +48,11 @@ public class PermissionVO {
*/
@ApiModelProperty(value="重定向地址")
private String redirect;
+ /**
+ * 链接跳转目标
+ */
+ @ApiModelProperty(value="链接跳转目标")
+ private String target;
/**
* 父菜单ID
*/
diff --git a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/Router.java b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/Router.java
index 8e20b8bf..0f56aa87 100644
--- a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/Router.java
+++ b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/Router.java
@@ -56,6 +56,11 @@ public class Router {
*/
@ApiModelProperty(value="重定向地址")
private String redirect;
+ /**
+ * 链接跳转目标
+ */
+ @ApiModelProperty(value="链接跳转目标")
+ private String target;
/**
* 路由缓冲
*/
diff --git a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/oauth/filter/LoginPasswordDecoderFilter.java b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/oauth/filter/LoginPasswordDecoderFilter.java
index 047ebc3d..e0272b94 100644
--- a/ballcat-admin/src/main/java/com/hccake/ballcat/admin/oauth/filter/LoginPasswordDecoderFilter.java
+++ b/ballcat-admin/src/main/java/com/hccake/ballcat/admin/oauth/filter/LoginPasswordDecoderFilter.java
@@ -6,11 +6,15 @@ import com.hccake.ballcat.common.core.filter.ModifyParamMapRequestWrapper;
import com.hccake.ballcat.common.core.result.R;
import com.hccake.ballcat.common.core.result.ResultStatus;
import com.hccake.ballcat.common.core.util.PasswordUtil;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.userdetails.User;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
@@ -21,6 +25,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
/**
* @author Hccake
@@ -28,6 +33,7 @@ import java.util.Map;
* @date 2019/9/28 16:57
* 前端传递过来的加密密码,需要在登陆之前先解密
*/
+@Slf4j
@Order(0)
@WebFilter(urlPatterns = {UrlMappingConst.OAUTH_LOGIN})
public class LoginPasswordDecoderFilter extends OncePerRequestFilter {
@@ -39,6 +45,8 @@ public class LoginPasswordDecoderFilter extends OncePerRequestFilter {
private static final String GRANT_TYPE = "grant_type";
+ private static final String TEST_CLIENT = "test";
+
@Autowired
private ObjectMapper objectMapper;
@@ -55,6 +63,16 @@ public class LoginPasswordDecoderFilter extends OncePerRequestFilter {
*/
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
+
+ // 测试客户端 跳过密码解密(swagger 或 postman测试时使用)
+ Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+ User user = (User) Optional.ofNullable(authentication)
+ .map(Authentication::getPrincipal).orElse(null);
+ if (user != null && TEST_CLIENT.equals(user.getUsername())) {
+ filterChain.doFilter(request, response);
+ return;
+ }
+
// 解密前台加密后的密码
Map parameterMap = new HashMap<>(request.getParameterMap());
try{
@@ -76,8 +94,5 @@ public class LoginPasswordDecoderFilter extends OncePerRequestFilter {
filterChain.doFilter( new ModifyParamMapRequestWrapper(request, parameterMap), response);
}
-
-
-
}
diff --git a/ballcat-admin/src/main/resources/application.yml b/ballcat-admin/src/main/resources/application.yml
index d2ae8ef0..496311bb 100644
--- a/ballcat-admin/src/main/resources/application.yml
+++ b/ballcat-admin/src/main/resources/application.yml
@@ -6,12 +6,12 @@ spring:
name: @artifactId@
profiles:
active: @profiles.active@ # 当前激活配置,默认dev
-# boot:
-# admin:
-# client:
-# url: http://ballcat-monitor:9999
-# username: admin
-# password: 123456
+ boot:
+ admin:
+ client:
+ url: http://ballcat-monitor:9999
+ username: admin
+ password: 123456
# 暴露监控端口
management:
@@ -40,13 +40,13 @@ monitor:
# 定时任务相关配置
-#xxl:
-# job:
-# admin:
-# addresses: http://ballcat-job:8888/xxl-job-admin # xxl-job-admin 接口地址
-# executor:
-# port: 7888 #通讯端口
-# appName: ballcat-admin-job
+xxl:
+ job:
+ admin:
+ addresses: http://ballcat-job:8888/xxl-job-admin # xxl-job-admin 接口地址
+ executor:
+ port: 7888 #通讯端口
+ appName: ballcat-admin-job
swagger:
@@ -61,7 +61,14 @@ swagger:
name: Hccake
email: chengbohua@foxmail.com
url: https://github.com/Hccake
+ authorization:
+ name: BallCat OAuth
+ auth-regex: ^.*$
+ authorization-scope-list:
+ - scope: server
+ description: server all
+ token-url-list:
+ - http://ballcat-admin:8080/oauth/token
provider:
resources:
- - {name: ballcat-api, url: http://ballcat-api:9090/v2/api-docs, swagger-version: 2.0}
-
+ - {name: ballcat-api, url: http://ballcat-api:9090/v2/api-docs, swagger-version: 2.0}
\ No newline at end of file
diff --git a/ballcat-codegen/src/main/resources/template/permission.sql.vm b/ballcat-codegen/src/main/resources/template/permission.sql.vm
index 12c5889b..7acdc535 100644
--- a/ballcat-codegen/src/main/resources/template/permission.sql.vm
+++ b/ballcat-codegen/src/main/resources/template/permission.sql.vm
@@ -1,3 +1,4 @@
+## 备注: 变量的使用方法,是mysql语法,基础生成部分是全数据库通用,若数据源非mysql,请只执行基础生成sql
START TRANSACTION;
-- 目录ID
@@ -5,6 +6,7 @@ set @pId = 目录ID;
-- 菜单ID
set @menuId = 菜单ID;
+## -----------------基础生成部分start-------------
-- 插入菜单
INSERT INTO `sys_permission`
(`id`, `parent_id`, `title`, `code`, `path`, `router_name`, `component`, `redirect`, `icon`, `sort`, `keep_alive`, `hidden`, `type`, `del_flag`, `create_time`, `update_time`)
@@ -25,6 +27,8 @@ INSERT INTO `sys_permission` ( `id`, `parent_id`,`title`, `code`, `sort`, `type`
VALUES
( @menuId + 3, @menuId, '${comments}删除', '${moduleName}_${pathName}_del', 2, 2, 0, '2019-10-13 22:00:24', NULL );
+## -----------------基础生成部分end-------------
+
-- 清空变量
set @menuId = null;
set @pId = null;
diff --git a/ballcat-common/ballcat-common-conf/src/main/java/com/hccake/ballcat/common/conf/config/FilterConfig.java b/ballcat-common/ballcat-common-conf/src/main/java/com/hccake/ballcat/common/conf/config/FilterConfig.java
index b6cd525e..52ad62f9 100644
--- a/ballcat-common/ballcat-common-conf/src/main/java/com/hccake/ballcat/common/conf/config/FilterConfig.java
+++ b/ballcat-common/ballcat-common-conf/src/main/java/com/hccake/ballcat/common/conf/config/FilterConfig.java
@@ -21,9 +21,9 @@ import org.springframework.context.annotation.Configuration;
@ConditionalOnWebApplication
public class FilterConfig {
- @Value("${monitor.secret-id: ballcat-monitor}")
+ @Value("${monitor.secret-id:ballcat-monitor}")
private String secretId;
- @Value("${monitor.secret-key: =BallCat-Monitor}")
+ @Value("${monitor.secret-key:=BallCat-Monitor}")
private String secretKey;
@Bean
diff --git a/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java b/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java
index 82ca0889..f4bda2d8 100644
--- a/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java
+++ b/ballcat-common/ballcat-common-log/src/main/java/com/hccake/ballcat/commom/log/access/filter/AccessLogFilter.java
@@ -1,5 +1,6 @@
package com.hccake.ballcat.commom.log.access.filter;
+import cn.hutool.core.util.StrUtil;
import com.hccake.ballcat.commom.log.access.service.AccessLogHandlerService;
import com.hccake.ballcat.common.core.filter.RepeatBodyRequestWrapper;
import lombok.AllArgsConstructor;
@@ -34,6 +35,11 @@ public class AccessLogFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
+ // 排除监控请求 TODO 可配置
+ if (StrUtil.containsAnyIgnoreCase(request.getRequestURI(),"/actuator")){
+ filterChain.doFilter(request, response);
+ return;
+ }
RepeatBodyRequestWrapper requestWrapper = new RepeatBodyRequestWrapper(request);
@@ -67,4 +73,5 @@ public class AccessLogFilter extends OncePerRequestFilter {
}
}
+
}
diff --git a/ballcat-common/ballcat-common-swagger/pom.xml b/ballcat-common/ballcat-common-swagger/pom.xml
index 79f2c5d1..dda44aed 100644
--- a/ballcat-common/ballcat-common-swagger/pom.xml
+++ b/ballcat-common/ballcat-common-swagger/pom.xml
@@ -15,8 +15,19 @@
io.springfox
springfox-swagger2
+
+
+ io.swagger
+ swagger-models
+
+
2.9.2
+
+ io.swagger
+ swagger-models
+ 1.5.21
+
org.springframework
spring-web
diff --git a/ballcat-common/ballcat-common-swagger/src/main/java/com/hccake/ballcat/common/swagger/SwaggerConfiguration.java b/ballcat-common/ballcat-common-swagger/src/main/java/com/hccake/ballcat/common/swagger/SwaggerConfiguration.java
index 1065627c..c62b29dd 100644
--- a/ballcat-common/ballcat-common-swagger/src/main/java/com/hccake/ballcat/common/swagger/SwaggerConfiguration.java
+++ b/ballcat-common/ballcat-common-swagger/src/main/java/com/hccake/ballcat/common/swagger/SwaggerConfiguration.java
@@ -1,8 +1,9 @@
package com.hccake.ballcat.common.swagger;
import io.swagger.annotations.ApiOperation;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
@@ -21,11 +22,12 @@ import java.util.List;
* @version 1.0
* @date 2019/11/1 19:43
*/
+@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
- @ConditionalOnMissingBean
+ @ConfigurationProperties("swagger")
public SwaggerProperties swaggerProperties() {
return new SwaggerProperties();
}
@@ -71,7 +73,6 @@ public class SwaggerConfiguration {
.build());
}
-
private OAuth securitySchema() {
ArrayList authorizationScopeList = new ArrayList<>();
swaggerProperties().getAuthorization().getAuthorizationScopeList().forEach(authorizationScope -> authorizationScopeList.add(new AuthorizationScope(authorizationScope.getScope(), authorizationScope.getDescription())));
diff --git a/ballcat-common/ballcat-common-swagger/src/main/java/com/hccake/ballcat/common/swagger/SwaggerProperties.java b/ballcat-common/ballcat-common-swagger/src/main/java/com/hccake/ballcat/common/swagger/SwaggerProperties.java
index feed50ef..b1c409d0 100644
--- a/ballcat-common/ballcat-common-swagger/src/main/java/com/hccake/ballcat/common/swagger/SwaggerProperties.java
+++ b/ballcat-common/ballcat-common-swagger/src/main/java/com/hccake/ballcat/common/swagger/SwaggerProperties.java
@@ -2,8 +2,6 @@ package com.hccake.ballcat.common.swagger;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@@ -14,8 +12,6 @@ import java.util.List;
* @date 2019/11/1 19:37
*/
@Data
-@Component
-@ConfigurationProperties("swagger")
public class SwaggerProperties {
/**
* 是否开启swagger
diff --git a/ballcat-monitor/src/main/java/com/hccake/ballcat/monitor/security/AuthHeaderProvider.java b/ballcat-monitor/src/main/java/com/hccake/ballcat/monitor/security/AuthHeaderProvider.java
index 27a9a9f6..28d10648 100644
--- a/ballcat-monitor/src/main/java/com/hccake/ballcat/monitor/security/AuthHeaderProvider.java
+++ b/ballcat-monitor/src/main/java/com/hccake/ballcat/monitor/security/AuthHeaderProvider.java
@@ -16,9 +16,9 @@ import org.springframework.stereotype.Component;
@Component
public class AuthHeaderProvider implements HttpHeadersProvider {
- @Value("${monitor.secret-id: ballcat-monitor}")
+ @Value("${monitor.secret-id:ballcat-monitor}")
private String secretId;
- @Value("${monitor.secret-key: =BallCat-Monitor}")
+ @Value("${monitor.secret-key:=BallCat-Monitor}")
private String secretKey;
diff --git a/ballcat-monitor/src/main/resources/application.yml b/ballcat-monitor/src/main/resources/application.yml
index 66d61c65..7d586363 100644
--- a/ballcat-monitor/src/main/resources/application.yml
+++ b/ballcat-monitor/src/main/resources/application.yml
@@ -11,7 +11,10 @@ spring:
user:
name: admin
password: 123456
-
+ boot:
+ admin:
+ ui:
+ title: 'BallCat Monitor'
# 请求Actuator加解密密钥
monitor:
diff --git a/doc/2ballcat.sql b/doc/2ballcat.sql
index 432796c6..c2a1f884 100644
--- a/doc/2ballcat.sql
+++ b/doc/2ballcat.sql
@@ -105,26 +105,26 @@ INSERT INTO `oauth_client_details` VALUES ('test', NULL, '$2a$10$8DrIu79gvgx8.nQ
-- Table structure for sys_permission
-- ----------------------------
DROP TABLE IF EXISTS `sys_permission`;
-CREATE TABLE `sys_permission` (
+CREATE TABLE `sys_permission` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单ID',
- `title` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单标题',
- `code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '菜单权限标识',
- `path` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由URL',
- `router_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '路由名称',
- `component` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'component地址',
- `redirect` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '重定向地址',
- `parent_id` int(11) NULL DEFAULT NULL COMMENT '父菜单ID',
- `icon` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标',
- `sort` int(11) NULL DEFAULT 1 COMMENT '排序值',
- `keep_alive` tinyint(1) NULL DEFAULT 0 COMMENT '0-开启,1- 关闭',
- `hidden` tinyint(1) NULL DEFAULT 0 COMMENT '是否隐藏路由: 0否,1是',
- `type` tinyint(1) NULL DEFAULT 0 COMMENT '菜单类型 (0菜单 1按钮)',
- `del_flag` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除标记(0--正常 1--删除)',
- `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
- `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
+ `title` varchar(32) DEFAULT NULL COMMENT '菜单标题',
+ `code` varchar(32) DEFAULT NULL COMMENT '菜单权限标识',
+ `path` varchar(128) DEFAULT NULL COMMENT '路由URL',
+ `router_name` varchar(32) DEFAULT NULL COMMENT '路由名称',
+ `component` varchar(128) DEFAULT NULL COMMENT 'component地址',
+ `redirect` varchar(255) DEFAULT NULL COMMENT '重定向地址',
+ `target` varchar(20) DEFAULT NULL COMMENT '链接跳转目标',
+ `parent_id` int(11) DEFAULT NULL COMMENT '父菜单ID',
+ `icon` varchar(32) DEFAULT NULL COMMENT '图标',
+ `sort` int(11) DEFAULT '1' COMMENT '排序值',
+ `keep_alive` tinyint(1) DEFAULT '0' COMMENT '0-开启,1- 关闭',
+ `hidden` tinyint(1) DEFAULT '0' COMMENT '是否隐藏路由: 0否,1是',
+ `type` tinyint(1) DEFAULT '0' COMMENT '菜单类型 (0菜单 1按钮)',
+ `del_flag` tinyint(1) DEFAULT '0' COMMENT '逻辑删除标记(0--正常 1--删除)',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
-) ENGINE = InnoDB AUTO_INCREMENT = 110301 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '菜单权限' ROW_FORMAT = Dynamic;
-
+) ENGINE=InnoDB AUTO_INCREMENT=110301 DEFAULT CHARSET=utf8mb4 COMMENT='菜单权限';
-- ----------------------------
-- Records of sys_permission
-- ----------------------------
diff --git a/pom.xml b/pom.xml
index 7fd4aaad..8d8d6559 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
1.8
1.8
- 2.2.1.RELEASE
+ 2.1.8.RELEASE
Cairo-SR8
1.3.0.Final