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