Commit 0017f11d by 雷紫添

版本迭代

parent c4e1d837
......@@ -7,20 +7,21 @@
<groupId>xzxt.zxgl.report</groupId>
<artifactId>zxgl</artifactId>
<packaging>jar</packaging>
<version>2.7.1</version>
<version>3.0.3</version>
<properties>
<blade.tool.version>2.7.1</blade.tool.version>
<blade.tool.version>3.0.3</blade.tool.version>
<java.version>1.8</java.version>
<knife4j.version>2.0.3</knife4j.version>
<mybatis.plus.version>3.3.2</mybatis.plus.version>
<knife4j.version>2.0.8</knife4j.version>
<mybatis.plus.version>3.4.1</mybatis.plus.version>
<protostuff.version>1.6.0</protostuff.version>
<captcha.version>1.6.2</captcha.version>
<easyexcel.version>2.1.6</easyexcel.version>
<easyexcel.version>2.2.6</easyexcel.version>
<spring.boot.version>2.2.7.RELEASE</spring.boot.version>
<spring.boot.version>2.4.4</spring.boot.version>
<spring.plugin.version>2.0.0.RELEASE</spring.plugin.version>
<spring.platform.version>Cairo-SR8</spring.platform.version>
<!-- 推荐使用Harbor -->
......@@ -32,6 +33,16 @@
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-core</artifactId>
<version>${spring.plugin.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-metadata</artifactId>
<version>${spring.plugin.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
......
package org.springblade.common.config;
import com.fasterxml.classmate.ResolvedType;
import com.fasterxml.classmate.TypeResolver;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiOperation;
import io.undertow.security.api.SecurityContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @Author scott
*/
@Slf4j
@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {
private final TypeResolver typeResolver;
@Autowired
public SwaggerConfiguration(TypeResolver typeResolver) {
this.typeResolver = typeResolver;
}
/*@Bean
public UiConfiguration uiConfiguration(){
return UiConfigurationBuilder.builder().supportedSubmitMethods(new String[]{})
.displayOperationId(true)
.build();
}*/
@Bean(value = "defaultApi")
public Docket defaultApi() {
ParameterBuilder parameterBuilder=new ParameterBuilder();
List<Parameter> parameters= Lists.newArrayList();
Docket docket=new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.groupName("默认接口")
.select()
.apis(RequestHandlerSelectors.basePackage("org.springblade"))
//.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build().globalOperationParameters(parameters);
//.securityContexts(Lists.newArrayList(securityContext())).securitySchemes(Lists.<SecurityScheme>newArrayList(apiKey()));
return docket;
}
/* @Bean(value = "groupRestApi")
public Docket groupRestApi() {
List<ResolvedType> list=Lists.newArrayList();
//SpringAddtionalModel springAddtionalModel= springAddtionalModelService.scan("com.swagger.bootstrap.ui.demo.extend");
return new Docket(DocumentationType.SWAGGER_2)
// .apiInfo(groupApiInfo())
.groupName("分组接口")
.select()
.apis(RequestHandlerSelectors.basePackage("com.swagger.bootstrap.ui.demo.group"))
.paths(PathSelectors.any())
.build()
.additionalModels(typeResolver.resolve(DeveloperApiInfo.class)).securityContexts(Lists.newArrayList(securityContext(),securityContext1())).securitySchemes(Lists.<SecurityScheme>newArrayList(apiKey(),apiKey1()));
}*/
/* private ApiInfo groupApiInfo(){
DeveloperApiInfoExtension apiInfoExtension=new DeveloperApiInfoExtension();
apiInfoExtension.addDeveloper(new DeveloperApiInfo("张三","zhangsan@163.com","Java"))
.addDeveloper(new DeveloperApiInfo("李四","lisi@163.com","Java"));
return new ApiInfoBuilder()
.title("swagger-bootstrap-ui很棒~~~!!!")
.description("<div style='font-size:14px;color:red;'>swagger-bootstrap-ui-demo RESTful APIs</div>")
.termsOfServiceUrl("http://www.group.com/")
.contact("group@qq.com")
.version("1.0")
.extensions(Lists.newArrayList(apiInfoExtension))
.build();
}*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("swagger-bootstrap-ui-demo RESTful APIs")
.description("# swagger-bootstrap-ui-demo RESTful APIs")
.termsOfServiceUrl("http://www.xx.com/")
.contact("xx@qq.com")
.version("1.0")
.build();
}
private ApiKey apiKey() {
return new ApiKey("BearerToken", "Authorization", "header");
}
private ApiKey apiKey1() {
return new ApiKey("BearerToken1", "Authorization-x", "header");
}
/* private SecurityContext securityContext() {
return SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.regex("/.*"))
.build();
}*/
/* private SecurityContext securityContext1() {
return SecurityContext.builder()
.securityReferences(defaultAuth1())
.forPaths(PathSelectors.regex("/.*"))
.build();
}*/
List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Lists.newArrayList(new SecurityReference("BearerToken", authorizationScopes));
}
List<SecurityReference> defaultAuth1() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Lists.newArrayList(new SecurityReference("BearerToken1", authorizationScopes));
}
}
......@@ -54,9 +54,9 @@ public class SecureUtil {
private final static String TENANT_ID = TokenConstant.TENANT_ID;
private final static String CLIENT_ID = TokenConstant.CLIENT_ID;
private final static Integer AUTH_LENGTH = TokenConstant.AUTH_LENGTH;
private static String BASE64_SECURITY = Base64.getEncoder().encodeToString(TokenConstant.SIGN_KEY.getBytes(Charsets.UTF_8));
private static final String BASE64_SECURITY = Base64.getEncoder().encodeToString(TokenConstant.SIGN_KEY.getBytes(Charsets.UTF_8));
private static IClientDetailsService clientDetailsService;
private static final IClientDetailsService clientDetailsService;
static {
clientDetailsService = SpringUtil.getBean(IClientDetailsService.class);
......@@ -116,7 +116,6 @@ public class SecureUtil {
HttpServletRequest request = WebUtil.getRequest();
// 优先从 request 中获取
Object bladeUser = request.getAttribute(XZXT_USER_REQUEST_ATTR);
System.out.println(bladeUser+"第一次获取的bladeUser");
if (bladeUser == null) {
bladeUser = getUserXzxt(request);
if (bladeUser != null) {
......@@ -125,12 +124,12 @@ public class SecureUtil {
}
}
System.out.println(bladeUser+"最终返回的bladeUser");
return (XzxtUser) bladeUser;
}
public static XzxtUser getUserXzxt(HttpServletRequest request) {
Claims claims = getClaims(request);
if (claims == null) {
return null;
}
......@@ -307,17 +306,14 @@ public class SecureUtil {
*/
public static Claims getClaims(HttpServletRequest request) {
String auth = request.getHeader(SecureUtil.HEADER);
System.out.println(auth+"第一次从header拿blade-auth");
if (StringUtil.isNotBlank(auth) && auth.length() > AUTH_LENGTH) {
String headStr = auth.substring(0, 6).toLowerCase();
if (headStr.compareTo(SecureUtil.BEARER) == 0) {
auth = auth.substring(7);
System.out.println(auth+"要校验的jsonWebToken");
return SecureUtil.parseJWT(auth);
}
} else {
String parameter = request.getParameter(SecureUtil.HEADER);
System.out.println(parameter+"parameter第一次从header拿blade-auth");
if (StringUtil.isNotBlank(parameter)) {
return SecureUtil.parseJWT(parameter);
}
......@@ -352,9 +348,10 @@ public class SecureUtil {
* @return Claims
*/
public static Claims parseJWT(String jsonWebToken) {
try {
return Jwts.parser()
.setSigningKey(Base64.getDecoder().decode(BASE64_SECURITY))
return Jwts.parserBuilder()
.setSigningKey(Base64.getDecoder().decode(BASE64_SECURITY)).build()
.parseClaimsJws(jsonWebToken).getBody();
} catch (Exception ex) {
return null;
......@@ -395,10 +392,10 @@ public class SecureUtil {
Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
//添加构成JWT的类
JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JsonWebToken")
JwtBuilder builder = Jwts.builder().setHeaderParam("typ", "JWT")
.setIssuer(issuer)
.setAudience(audience)
.signWith(signatureAlgorithm, signingKey);
.signWith(signingKey);
//设置JWT参数
user.forEach(builder::claim);
......
......@@ -21,8 +21,7 @@ import java.util.Map;
@RestController
@RequestMapping(value="api/sys",produces = "application/json; charset=utf-8")
public class UserInfoByTokenController {
@Value(value = "${redistimeout}")
private int redistimeout;
@Autowired
private RedisLock redisLock;
@Autowired
......
......@@ -16,10 +16,7 @@ spring:
cache:
ehcache:
config: classpath:config/ehcache.xml
http:
encoding:
charset: UTF-8
force: true
servlet:
multipart:
max-file-size: 256MB
......@@ -63,12 +60,30 @@ mybatis-plus:
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
#knife4j配置
knife4j:
#启用
enable: true
#基础认证
basic:
enable: false
username: blade
password: blade
#增强配置
setting:
enableSwaggerModels: true
enableDocumentManage: true
enableHost: false
enableHostText: http://localhost
enableRequestCache: true
enableFilterMultipartApis: false
enableFilterMultipartApiMethodType: POST
language: zh-CN
#swagger配置信息
swagger:
title: 命案系统 接口文档系统
description: 命案系统 接口文档系统
version: 2.7.1
version: 3.0.3
license: Powered By Founder
licenseUrl: https://xzxt.nm
terms-of-service-url: https://xzxt.nm
......
package org.springblade.test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springblade.core.test.BladeBootTest;
import org.springblade.core.test.BladeSpringRunner;
import org.springblade.modules.desk.service.INoticeService;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Blade单元测试
*
* @author Chill
*/
@RunWith(BladeSpringRunner.class)
@BladeBootTest(appName = "blade-runner", profile = "test")
public class BladeTest {
@Autowired
private INoticeService noticeService;
@Test
public void contextLoads() {
int count = noticeService.count();
System.out.println("notice数量:[" + count + "] 个");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment