From c968eb36ef15d886c6529973a52ef8ff540c1c95 Mon Sep 17 00:00:00 2001
From: zhengjie <201507802@qq.com>
Date: Wed, 3 Feb 2021 09:47:02 +0800
Subject: [PATCH 1/5] =?UTF-8?q?[=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96](v2.6?=
=?UTF-8?q?)=EF=BC=9A=E4=BF=AE=E6=AD=A3=E9=85=8D=E7=BD=AE=E6=96=87?=
=?UTF-8?q?=E4=BB=B6[login-code:=20height]=E6=8B=BC=E5=86=99=E9=94=99?=
=?UTF-8?q?=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../modules/security/config/ConfigBeanConfiguration.java | 4 ++--
.../me/zhengjie/modules/security/config/bean/LoginCode.java | 4 ++--
.../modules/security/config/bean/LoginProperties.java | 1 +
eladmin-system/src/main/resources/config/application-dev.yml | 2 +-
eladmin-system/src/main/resources/config/application-prod.yml | 2 +-
5 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/ConfigBeanConfiguration.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/ConfigBeanConfiguration.java
index fde89507..8cbc88dd 100644
--- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/ConfigBeanConfiguration.java
+++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/ConfigBeanConfiguration.java
@@ -30,13 +30,13 @@ import org.springframework.context.annotation.Configuration;
public class ConfigBeanConfiguration {
@Bean
- @ConfigurationProperties(prefix = "login", ignoreUnknownFields = true)
+ @ConfigurationProperties(prefix = "login")
public LoginProperties loginProperties() {
return new LoginProperties();
}
@Bean
- @ConfigurationProperties(prefix = "jwt", ignoreUnknownFields = true)
+ @ConfigurationProperties(prefix = "jwt")
public SecurityProperties securityProperties() {
return new SecurityProperties();
}
diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCode.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCode.java
index 99660787..fefd252b 100644
--- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCode.java
+++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginCode.java
@@ -20,8 +20,8 @@ import lombok.Data;
/**
* 登录验证码配置信息
*
- * @author: liaojinlong
- * @date: 2020/6/10 18:53
+ * @author liaojinlong
+ * @date 2020/6/10 18:53
*/
@Data
public class LoginCode {
diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginProperties.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginProperties.java
index a609f5c9..ca57213a 100644
--- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginProperties.java
+++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/bean/LoginProperties.java
@@ -39,6 +39,7 @@ public class LoginProperties {
private boolean singleLogin = false;
private LoginCode loginCode;
+
/**
* 用户登录信息缓存
*/
diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml
index c8bf11f1..d3fbf517 100644
--- a/eladmin-system/src/main/resources/config/application-dev.yml
+++ b/eladmin-system/src/main/resources/config/application-dev.yml
@@ -66,7 +66,7 @@ login:
# 验证码高度
width: 111
# 验证码宽度
- heigth: 36
+ height: 36
# 内容长度
length: 2
# 字体名称,为空则使用默认字体
diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml
index 4b513e22..52e52ddf 100644
--- a/eladmin-system/src/main/resources/config/application-prod.yml
+++ b/eladmin-system/src/main/resources/config/application-prod.yml
@@ -65,7 +65,7 @@ login:
# 验证码高度
width: 111
# 验证码宽度
- heigth: 36
+ height: 36
# 内容长度
length: 2
# 字体名称,为空则使用默认字体,如遇到线上乱码,设置其他字体即可
From 0dfdcf11e8704ba62865b0c2fe872336d0e33386 Mon Sep 17 00:00:00 2001
From: zhengjie <201507802@qq.com>
Date: Mon, 8 Feb 2021 20:57:44 +0800
Subject: [PATCH 2/5] =?UTF-8?q?[=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96](v2.6?=
=?UTF-8?q?)=EF=BC=9A=E4=BF=AE=E5=A4=8D=E9=82=AE=E4=BB=B6=E5=8F=91?=
=?UTF-8?q?=E9=80=81=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
eladmin-tools/pom.xml | 2 +-
.../main/java/me/zhengjie/service/impl/EmailServiceImpl.java | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/eladmin-tools/pom.xml b/eladmin-tools/pom.xml
index 61b1f6d0..4bbf9f4c 100644
--- a/eladmin-tools/pom.xml
+++ b/eladmin-tools/pom.xml
@@ -13,7 +13,7 @@
工具模块
- 1.5.0-b01
+ 1.4.7
[7.2.0, 7.2.99]
4.9.153.ALL
diff --git a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java
index a71628e3..c98c76ec 100644
--- a/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java
+++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/EmailServiceImpl.java
@@ -69,7 +69,9 @@ public class EmailServiceImpl implements EmailService {
}
// 封装
MailAccount account = new MailAccount();
- account.setUser(emailConfig.getUser());
+ // 设置用户
+ String user = emailConfig.getFromUser().split("@")[0];
+ account.setUser(user);
account.setHost(emailConfig.getHost());
account.setPort(Integer.parseInt(emailConfig.getPort()));
account.setAuth(true);
From 7b0caae907253b5735475f3a8f99a69ce400bede Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=B4=8B?=
Date: Mon, 1 Mar 2021 19:04:47 +0800
Subject: [PATCH 3/5] =?UTF-8?q?=E9=94=99=E5=88=AB=E5=AD=97=E6=9B=B4?=
=?UTF-8?q?=E6=AD=A3=20(#590)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sql/eladmin.sql | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sql/eladmin.sql b/sql/eladmin.sql
index 1cc6ff7e..00234d29 100644
--- a/sql/eladmin.sql
+++ b/sql/eladmin.sql
@@ -660,7 +660,7 @@ CREATE TABLE `sys_user` (
`is_admin` bit(1) DEFAULT b'0' COMMENT '是否为admin账号',
`enabled` bigint(20) DEFAULT NULL COMMENT '状态:1启用、0禁用',
`create_by` varchar(255) DEFAULT NULL COMMENT '创建者',
- `update_by` varchar(255) DEFAULT NULL COMMENT '更新着',
+ `update_by` varchar(255) DEFAULT NULL COMMENT '更新者',
`pwd_reset_time` datetime DEFAULT NULL COMMENT '修改密码的时间',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
@@ -822,4 +822,4 @@ CREATE TABLE `tool_qiniu_content` (
BEGIN;
COMMIT;
-SET FOREIGN_KEY_CHECKS = 1;
\ No newline at end of file
+SET FOREIGN_KEY_CHECKS = 1;
From 8bb800c68e0a69a4220ec15cfb085a1b8f889f61 Mon Sep 17 00:00:00 2001
From: lWoHvYe <39266195+lWoHvYe@users.noreply.github.com>
Date: Mon, 1 Mar 2021 19:07:56 +0800
Subject: [PATCH 4/5] =?UTF-8?q?Spring=20Boot=E7=89=88=E6=9C=AC=E5=8D=87?=
=?UTF-8?q?=E7=BA=A72.2.10=EF=BC=8C=E8=A7=A3=E5=86=B3in=20=E6=9F=A5?=
=?UTF-8?q?=E8=AF=A2=E4=BC=A0null=E6=97=B6=E6=8A=A5=E9=94=99=E3=80=82?=
=?UTF-8?q?=E8=B0=83=E6=95=B4Swagger=E4=B8=ADtoken=E8=AE=BE=E7=BD=AE?=
=?UTF-8?q?=E6=96=B9=E5=BC=8F=20(#595)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Spring Boot版本调整为2.2.10。在此前的版本,若in 查询传入null,会报错。相关sql 为in ()。在2.2版本修复了此问题,相关sql改为 in (null)。鉴于此,建议进行升级。
* Spring Boot依赖升级后,Sort的设置方式调整。由 new Sort()改为 Sort.by()
* 调整接口文档Swagger中,token的设置方式,由每个接口单独设置,改为设置统一的token,日常测试更加方便
---
.../me/zhengjie/config/SwaggerConfig.java | 67 ++++++++++++++-----
.../system/service/impl/DeptServiceImpl.java | 4 +-
.../system/service/impl/MenuServiceImpl.java | 2 +-
.../system/service/impl/RoleServiceImpl.java | 2 +-
pom.xml | 2 +-
5 files changed, 56 insertions(+), 21 deletions(-)
diff --git a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java
index e5e16216..54e47cbd 100644
--- a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java
+++ b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java
@@ -16,7 +16,6 @@
package me.zhengjie.config;
import com.fasterxml.classmate.TypeResolver;
-import com.google.common.base.Predicates;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -26,18 +25,18 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.data.domain.Pageable;
import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.schema.AlternateTypeRule;
import springfox.documentation.schema.AlternateTypeRuleConvention;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Parameter;
+import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
import java.util.ArrayList;
import java.util.List;
+
import static com.google.common.collect.Lists.newArrayList;
import static springfox.documentation.schema.AlternateTypeRules.newRule;
@@ -62,22 +61,26 @@ public class SwaggerConfig {
@Bean
@SuppressWarnings("all")
public Docket createRestApi() {
- ParameterBuilder ticketPar = new ParameterBuilder();
- List pars = new ArrayList<>();
- ticketPar.name(tokenHeader).description("token")
- .modelRef(new ModelRef("string"))
- .parameterType("header")
- .defaultValue(tokenStartWith + " ")
- .required(true)
- .build();
- pars.add(ticketPar.build());
+// ParameterBuilder ticketPar = new ParameterBuilder();
+//// List pars = new ArrayList<>();
+//// ticketPar.name(tokenHeader).description("token")
+//// .modelRef(new ModelRef("string"))
+//// .parameterType("header")
+//// .defaultValue(tokenStartWith + " ")
+//// .required(true)
+//// .build();
+// pars.add(ticketPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.enable(enabled)
.apiInfo(apiInfo())
.select()
- .paths(Predicates.not(PathSelectors.regex("/error.*")))
+// .paths(Predicates.not(PathSelectors.regex("/error.*")))
+ .paths(PathSelectors.any())
.build()
- .globalOperationParameters(pars);
+// .globalOperationParameters(pars)
+ //添加登陆认证
+ .securitySchemes(securitySchemes())
+ .securityContexts(securityContexts());
}
private ApiInfo apiInfo() {
@@ -88,6 +91,38 @@ public class SwaggerConfig {
.build();
}
+ private List securitySchemes() {
+ //设置请求头信息
+ List securitySchemes = new ArrayList<>();
+ ApiKey apiKey = new ApiKey(tokenHeader, tokenHeader, "header");
+ securitySchemes.add(apiKey);
+ return securitySchemes;
+ }
+
+ private List securityContexts() {
+ //设置需要登录认证的路径
+ List securityContexts = new ArrayList<>();
+ // ^(?!auth).*$ 表示所有包含auth的接口不需要使用securitySchemes即不需要带token
+ // ^标识开始 ()里是一子表达式 ?!/auth表示匹配不是/auth的位置,匹配上则添加请求头,注意路径已/开头 .表示任意字符 *表示前面的字符匹配多次 $标识结束
+ securityContexts.add(getContextByPath("^(?!/auth).*$"));
+ return securityContexts;
+ }
+
+ private SecurityContext getContextByPath(String pathRegex) {
+ return SecurityContext.builder()
+ .securityReferences(defaultAuth())
+ .forPaths(PathSelectors.regex(pathRegex))
+ .build();
+ }
+
+ private List defaultAuth() {
+ List securityReferences = new ArrayList<>();
+ AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+ AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+ authorizationScopes[0] = authorizationScope;
+ securityReferences.add(new SecurityReference(tokenHeader, authorizationScopes));
+ return securityReferences;
+ }
}
/**
diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java
index 8c7c331a..657a6074 100644
--- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java
+++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/DeptServiceImpl.java
@@ -58,7 +58,7 @@ public class DeptServiceImpl implements DeptService {
@Override
public List queryAll(DeptQueryCriteria criteria, Boolean isQuery) throws Exception {
- Sort sort = new Sort(Sort.Direction.ASC, "deptSort");
+ Sort sort = Sort.by(Sort.Direction.ASC, "deptSort");
String dataScopeType = SecurityUtils.getDataScopeType();
if (isQuery) {
if(dataScopeType.equals(DataScopeEnum.ALL.getValue())){
@@ -278,4 +278,4 @@ public class DeptServiceImpl implements DeptService {
redisUtils.delByKeys(CacheKey.DATA_USER, users.stream().map(User::getId).collect(Collectors.toSet()));
redisUtils.del(CacheKey.DEPT_ID + id);
}
-}
\ No newline at end of file
+}
diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java
index c7e45499..0e54fc92 100644
--- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java
+++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java
@@ -61,7 +61,7 @@ public class MenuServiceImpl implements MenuService {
@Override
public List queryAll(MenuQueryCriteria criteria, Boolean isQuery) throws Exception {
- Sort sort = new Sort(Sort.Direction.ASC, "menuSort");
+ Sort sort = Sort.by(Sort.Direction.ASC, "menuSort");
if(isQuery){
criteria.setPidIsNull(true);
List fields = QueryHelp.getAllFields(criteria.getClass(), new ArrayList<>());
diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java
index f8690229..e8b41438 100644
--- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java
+++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java
@@ -66,7 +66,7 @@ public class RoleServiceImpl implements RoleService {
@Override
public List queryAll() {
- Sort sort = new Sort(Sort.Direction.ASC, "level");
+ Sort sort = Sort.by(Sort.Direction.ASC, "level");
return roleMapper.toDto(roleRepository.findAll(sort));
}
diff --git a/pom.xml b/pom.xml
index a69c5d0d..0b8a4062 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.1.0.RELEASE
+ 2.2.10.RELEASE
From a1e8005499c7d9009d3fdd5821fd145eb52c8d26 Mon Sep 17 00:00:00 2001
From: Zheng Jie <201507802@qq.com>
Date: Mon, 1 Mar 2021 19:35:10 +0800
Subject: [PATCH 5/5] =?UTF-8?q?[=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96](v2.6?=
=?UTF-8?q?)=EF=BC=9Aupdate=20swagger?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../me/zhengjie/config/SwaggerConfig.java | 27 +++++--------------
1 file changed, 7 insertions(+), 20 deletions(-)
diff --git a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java
index 54e47cbd..50343bcb 100644
--- a/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java
+++ b/eladmin-common/src/main/java/me/zhengjie/config/SwaggerConfig.java
@@ -16,6 +16,7 @@
package me.zhengjie.config;
import com.fasterxml.classmate.TypeResolver;
+import com.google.common.base.Predicates;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -33,10 +34,8 @@ import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
import java.util.ArrayList;
import java.util.List;
-
import static com.google.common.collect.Lists.newArrayList;
import static springfox.documentation.schema.AlternateTypeRules.newRule;
@@ -52,32 +51,20 @@ public class SwaggerConfig {
@Value("${jwt.header}")
private String tokenHeader;
- @Value("${jwt.token-start-with}")
- private String tokenStartWith;
-
@Value("${swagger.enabled}")
private Boolean enabled;
@Bean
@SuppressWarnings("all")
public Docket createRestApi() {
-// ParameterBuilder ticketPar = new ParameterBuilder();
-//// List pars = new ArrayList<>();
-//// ticketPar.name(tokenHeader).description("token")
-//// .modelRef(new ModelRef("string"))
-//// .parameterType("header")
-//// .defaultValue(tokenStartWith + " ")
-//// .required(true)
-//// .build();
-// pars.add(ticketPar.build());
return new Docket(DocumentationType.SWAGGER_2)
.enable(enabled)
+ .pathMapping("/")
.apiInfo(apiInfo())
.select()
-// .paths(Predicates.not(PathSelectors.regex("/error.*")))
+ .paths(Predicates.not(PathSelectors.regex("/error.*")))
.paths(PathSelectors.any())
.build()
-// .globalOperationParameters(pars)
//添加登陆认证
.securitySchemes(securitySchemes())
.securityContexts(securityContexts());
@@ -87,7 +74,7 @@ public class SwaggerConfig {
return new ApiInfoBuilder()
.description("一个简单且易上手的 Spring boot 后台管理框架")
.title("EL-ADMIN 接口文档")
- .version("2.4")
+ .version("2.6")
.build();
}
@@ -104,14 +91,14 @@ public class SwaggerConfig {
List securityContexts = new ArrayList<>();
// ^(?!auth).*$ 表示所有包含auth的接口不需要使用securitySchemes即不需要带token
// ^标识开始 ()里是一子表达式 ?!/auth表示匹配不是/auth的位置,匹配上则添加请求头,注意路径已/开头 .表示任意字符 *表示前面的字符匹配多次 $标识结束
- securityContexts.add(getContextByPath("^(?!/auth).*$"));
+ securityContexts.add(getContextByPath());
return securityContexts;
}
- private SecurityContext getContextByPath(String pathRegex) {
+ private SecurityContext getContextByPath() {
return SecurityContext.builder()
.securityReferences(defaultAuth())
- .forPaths(PathSelectors.regex(pathRegex))
+ .forPaths(PathSelectors.regex("^(?!/auth).*$"))
.build();
}