修改路径
This commit is contained in:
parent
ae73499e6c
commit
6c8bfc651b
3
pom.xml
3
pom.xml
@ -6,7 +6,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-parent</artifactId>
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
<version>2.3.12.RELEASE</version>
|
<version>2.6.0</version>
|
||||||
<relativePath/> <!-- lookup parent from repository -->
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
</parent>
|
</parent>
|
||||||
<groupId>cn.zyjblogs</groupId>
|
<groupId>cn.zyjblogs</groupId>
|
||||||
@ -18,6 +18,7 @@
|
|||||||
<module>zyjblogs-rbac</module>
|
<module>zyjblogs-rbac</module>
|
||||||
<module>zyjblogs-gateway</module>
|
<module>zyjblogs-gateway</module>
|
||||||
<module>zyjblogs-common-spring-boot-starter</module>
|
<module>zyjblogs-common-spring-boot-starter</module>
|
||||||
|
<module>zyjblogs-web-spring-boot-starter</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.entity.constant;
|
package cn.zyjblogs.starter.common.entity.constant;
|
||||||
|
|
||||||
public class CommonConstant {
|
public class CommonConstant {
|
||||||
public static final Integer IS_DELETED = 1;
|
public static final Integer IS_DELETED = 1;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.entity.constant;
|
package cn.zyjblogs.starter.common.entity.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhuyijun
|
* @author zhuyijun
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.entity.constant;
|
package cn.zyjblogs.starter.common.entity.constant;
|
||||||
|
|
||||||
public class HttpHeaderConstant {
|
public class HttpHeaderConstant {
|
||||||
public static final String AUTHORIZATION = "Authorization";
|
public static final String AUTHORIZATION = "Authorization";
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.entity.constant;
|
package cn.zyjblogs.starter.common.entity.constant;
|
||||||
|
|
||||||
public class LengthConstant {
|
public class LengthConstant {
|
||||||
public static final int ID_SIZE = 32;
|
public static final int ID_SIZE = 32;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.entity.constant;
|
package cn.zyjblogs.starter.common.entity.constant;
|
||||||
|
|
||||||
public class RegexConstant {
|
public class RegexConstant {
|
||||||
public static final String MOBILE_PHONE_PATTERN = "[\\s]?|^1[3456789]\\d{9}$";
|
public static final String MOBILE_PHONE_PATTERN = "[\\s]?|^1[3456789]\\d{9}$";
|
@ -1,7 +1,7 @@
|
|||||||
package cn.zyjblogs.common.entity.context;
|
package cn.zyjblogs.starter.common.entity.context;
|
||||||
|
|
||||||
import cn.zyjblogs.common.entity.dto.ContextDto;
|
import cn.zyjblogs.starter.common.entity.dto.ContextDto;
|
||||||
import cn.zyjblogs.common.utils.bean.BeanUtils;
|
import cn.zyjblogs.starter.common.utils.bean.BeanUtils;
|
||||||
import com.alibaba.ttl.TransmittableThreadLocal;
|
import com.alibaba.ttl.TransmittableThreadLocal;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.entity.dto;
|
package cn.zyjblogs.starter.common.entity.dto;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.entity.jwt;
|
package cn.zyjblogs.starter.common.entity.jwt;
|
||||||
|
|
||||||
import io.jsonwebtoken.impl.DefaultClaims;
|
import io.jsonwebtoken.impl.DefaultClaims;
|
||||||
|
|
@ -3,7 +3,7 @@
|
|||||||
// (powered by FernFlower decompiler)
|
// (powered by FernFlower decompiler)
|
||||||
//
|
//
|
||||||
|
|
||||||
package cn.zyjblogs.common.entity.response;
|
package cn.zyjblogs.starter.common.entity.response;
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
@ -3,7 +3,7 @@
|
|||||||
// (powered by FernFlower decompiler)
|
// (powered by FernFlower decompiler)
|
||||||
//
|
//
|
||||||
|
|
||||||
package cn.zyjblogs.common.entity.response;
|
package cn.zyjblogs.starter.common.entity.response;
|
||||||
|
|
||||||
public class ResponseResult {
|
public class ResponseResult {
|
||||||
private static final int ZERO_DATA_TOTAL = 0;
|
private static final int ZERO_DATA_TOTAL = 0;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.entity.response;
|
package cn.zyjblogs.starter.common.entity.response;
|
||||||
|
|
||||||
public enum ResponseStatus {
|
public enum ResponseStatus {
|
||||||
CONTINUE(100, "Continue"),
|
CONTINUE(100, "Continue"),
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.exception;
|
package cn.zyjblogs.starter.common.exception;
|
||||||
|
|
||||||
public abstract class AbstractFrameworkException extends RuntimeException {
|
public abstract class AbstractFrameworkException extends RuntimeException {
|
||||||
public AbstractFrameworkException(String message) {
|
public AbstractFrameworkException(String message) {
|
@ -1,13 +1,12 @@
|
|||||||
package cn.zyjblogs.common.utils.bean;
|
package cn.zyjblogs.starter.common.utils.bean;
|
||||||
|
|
||||||
import cn.zyjblogs.common.utils.jackson.JacksonHolder;
|
import cn.zyjblogs.starter.common.utils.jackson.JacksonHolder;
|
||||||
import cn.zyjblogs.common.utils.jackson.exception.JsonConvertException;
|
import cn.zyjblogs.starter.common.utils.jackson.exception.JsonConvertException;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
@ -3,7 +3,7 @@
|
|||||||
// (powered by FernFlower decompiler)
|
// (powered by FernFlower decompiler)
|
||||||
//
|
//
|
||||||
|
|
||||||
package cn.zyjblogs.common.utils.crypto;
|
package cn.zyjblogs.starter.common.utils.crypto;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
@ -3,7 +3,7 @@
|
|||||||
// (powered by FernFlower decompiler)
|
// (powered by FernFlower decompiler)
|
||||||
//
|
//
|
||||||
|
|
||||||
package cn.zyjblogs.common.utils.crypto;
|
package cn.zyjblogs.starter.common.utils.crypto;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.Security;
|
import java.security.Security;
|
@ -3,7 +3,7 @@
|
|||||||
// (powered by FernFlower decompiler)
|
// (powered by FernFlower decompiler)
|
||||||
//
|
//
|
||||||
|
|
||||||
package cn.zyjblogs.common.utils.crypto;
|
package cn.zyjblogs.starter.common.utils.crypto;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.security.AlgorithmParameters;
|
import java.security.AlgorithmParameters;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.utils.jackson;
|
package cn.zyjblogs.starter.common.utils.jackson;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
@ -1,7 +1,7 @@
|
|||||||
package cn.zyjblogs.common.utils.jackson;
|
package cn.zyjblogs.starter.common.utils.jackson;
|
||||||
|
|
||||||
|
|
||||||
import cn.zyjblogs.common.utils.jackson.exception.JsonConvertException;
|
import cn.zyjblogs.starter.common.utils.jackson.exception.JsonConvertException;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import com.fasterxml.jackson.core.type.TypeReference;
|
@ -1,6 +1,6 @@
|
|||||||
package cn.zyjblogs.common.utils.jackson.exception;
|
package cn.zyjblogs.starter.common.utils.jackson.exception;
|
||||||
|
|
||||||
import cn.zyjblogs.common.exception.AbstractFrameworkException;
|
import cn.zyjblogs.starter.common.exception.AbstractFrameworkException;
|
||||||
|
|
||||||
public class JsonConvertException extends AbstractFrameworkException {
|
public class JsonConvertException extends AbstractFrameworkException {
|
||||||
public JsonConvertException(String msg) {
|
public JsonConvertException(String msg) {
|
@ -3,7 +3,7 @@
|
|||||||
// (powered by FernFlower decompiler)
|
// (powered by FernFlower decompiler)
|
||||||
//
|
//
|
||||||
|
|
||||||
package cn.zyjblogs.common.utils.jwt;
|
package cn.zyjblogs.starter.common.utils.jwt;
|
||||||
|
|
||||||
import io.jsonwebtoken.Claims;
|
import io.jsonwebtoken.Claims;
|
||||||
import io.jsonwebtoken.Clock;
|
import io.jsonwebtoken.Clock;
|
@ -1,4 +1,4 @@
|
|||||||
package cn.zyjblogs.common.utils.rsa;
|
package cn.zyjblogs.starter.common.utils.rsa;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
@ -16,11 +16,6 @@
|
|||||||
<maven.compiler.target>11</maven.compiler.target>
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
</properties>
|
</properties>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- Spring 集成 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-web</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-validation</artifactId>
|
<artifactId>spring-boot-starter-validation</artifactId>
|
||||||
@ -74,8 +69,11 @@
|
|||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>maven-source-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<skip>true</skip>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
@ -1,17 +1,11 @@
|
|||||||
package cn.zyjblogs.gateway.filter;
|
package cn.zyjblogs.gateway.filter;
|
||||||
|
|
||||||
import cn.zyjblogs.common.entity.constant.HttpHeaderConstant;
|
import cn.zyjblogs.starter.common.entity.constant.HttpHeaderConstant;
|
||||||
import cn.zyjblogs.common.entity.context.BaseContextHandler;
|
import cn.zyjblogs.starter.common.entity.response.ResponseObject;
|
||||||
import cn.zyjblogs.common.entity.dto.ContextDto;
|
import cn.zyjblogs.starter.common.entity.response.ResponseResult;
|
||||||
import cn.zyjblogs.common.entity.jwt.OauthClaims;
|
import cn.zyjblogs.starter.common.entity.response.ResponseStatus;
|
||||||
import cn.zyjblogs.common.entity.response.ResponseObject;
|
|
||||||
import cn.zyjblogs.common.entity.response.ResponseResult;
|
|
||||||
import cn.zyjblogs.common.entity.response.ResponseStatus;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import io.jsonwebtoken.Claims;
|
|
||||||
import io.jsonwebtoken.Jwt;
|
|
||||||
import io.jsonwebtoken.Jwts;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package cn.zyjblogs.oauth.config.security;
|
package cn.zyjblogs.oauth.config.security;
|
||||||
|
|
||||||
import cn.zyjblogs.common.entity.constant.ContextKeyConstant;
|
import cn.zyjblogs.starter.common.entity.constant.ContextKeyConstant;
|
||||||
import cn.zyjblogs.oauth.server.user.po.OauthUserDetails;
|
import cn.zyjblogs.oauth.server.user.po.OauthUserDetails;
|
||||||
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
|
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
|
||||||
import org.springframework.security.oauth2.common.OAuth2AccessToken;
|
import org.springframework.security.oauth2.common.OAuth2AccessToken;
|
||||||
|
@ -3,6 +3,7 @@ package cn.zyjblogs.oauth.config.security;
|
|||||||
import cn.zyjblogs.oauth.server.user.po.OauthUserDetails;
|
import cn.zyjblogs.oauth.server.user.po.OauthUserDetails;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
import org.springframework.security.authentication.BadCredentialsException;
|
||||||
import org.springframework.security.authentication.DisabledException;
|
import org.springframework.security.authentication.DisabledException;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
|
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
|
||||||
@ -12,6 +13,7 @@ import org.springframework.security.core.GrantedAuthority;
|
|||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
|
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
@ -39,16 +41,22 @@ public class OauthAuthenticationProvider extends DaoAuthenticationProvider {
|
|||||||
@Override
|
@Override
|
||||||
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
|
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
|
||||||
String username = authentication.getName();
|
String username = authentication.getName();
|
||||||
|
if (authentication.getCredentials() == null){
|
||||||
|
this.logger.debug("密码为空");
|
||||||
|
throw new BadCredentialsException(this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));
|
||||||
|
}
|
||||||
String password = (String) authentication.getCredentials();
|
String password = (String) authentication.getCredentials();
|
||||||
//获取用户信息
|
//获取用户信息
|
||||||
UserDetails user = userDetailsService.loadUserByUsername(username);
|
UserDetails user = userDetailsService.loadUserByUsername(username);
|
||||||
if (user == null){
|
if (user == null){
|
||||||
return null;
|
this.logger.debug("用户不存在");
|
||||||
|
throw new UsernameNotFoundException("用户不存在");
|
||||||
}
|
}
|
||||||
OauthUserDetails userDetails = (OauthUserDetails) user;
|
OauthUserDetails userDetails = (OauthUserDetails) user;
|
||||||
//比较前端传入的密码明文和数据库中加密的密码是否相等
|
//比较前端传入的密码明文和数据库中加密的密码是否相等
|
||||||
if (!passwordEncoder.matches(password, userDetails.getPassword())) {
|
if (!passwordEncoder.matches(password, userDetails.getPassword())) {
|
||||||
throw new DisabledException("用户密码不正确");
|
this.logger.debug("密码不正确");
|
||||||
|
throw new BadCredentialsException(this.messages.getMessage("AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials"));
|
||||||
}
|
}
|
||||||
//获取用户权限信息
|
//获取用户权限信息
|
||||||
Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
|
Collection<? extends GrantedAuthority> authorities = userDetails.getAuthorities();
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
package cn.zyjblogs.oauth.config.security;
|
package cn.zyjblogs.oauth.config.security;
|
||||||
|
|
||||||
import cn.zyjblogs.common.entity.constant.ContextKeyConstant;
|
import cn.zyjblogs.starter.common.entity.constant.ContextKeyConstant;
|
||||||
import cn.zyjblogs.common.utils.bean.BeanUtils;
|
|
||||||
import cn.zyjblogs.oauth.server.user.po.OauthUserDetails;
|
import cn.zyjblogs.oauth.server.user.po.OauthUserDetails;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.authority.AuthorityUtils;
|
import org.springframework.security.core.authority.AuthorityUtils;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
|
||||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
import org.springframework.security.oauth2.provider.token.DefaultUserAuthenticationConverter;
|
import org.springframework.security.oauth2.provider.token.DefaultUserAuthenticationConverter;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
57
zyjblogs-web-spring-boot-starter/pom.xml
Normal file
57
zyjblogs-web-spring-boot-starter/pom.xml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>zyjblogs-parent</artifactId>
|
||||||
|
<groupId>cn.zyjblogs</groupId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>zyjblogs-web-spring-boot-starter</artifactId>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
|
<maven.compiler.target>11</maven.compiler.target>
|
||||||
|
</properties>
|
||||||
|
<dependencies>
|
||||||
|
<!-- Spring 集成 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.xiaoymin</groupId>
|
||||||
|
<artifactId>knife4j-spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.swagger</groupId>
|
||||||
|
<artifactId>swagger-annotations</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-autoconfigure</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<skip>true</skip>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
@ -0,0 +1,110 @@
|
|||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package cn.zyjblogs.starter.web.config;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import org.springframework.beans.BeansException;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.beans.BeansException;
|
||||||
|
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.ReflectionUtils;
|
||||||
|
import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
|
||||||
|
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
|
||||||
|
import springfox.documentation.builders.ApiInfoBuilder;
|
||||||
|
import springfox.documentation.builders.PathSelectors;
|
||||||
|
import springfox.documentation.builders.RequestHandlerSelectors;
|
||||||
|
import springfox.documentation.oas.annotations.EnableOpenApi;
|
||||||
|
import springfox.documentation.service.ApiInfo;
|
||||||
|
import springfox.documentation.service.ApiKey;
|
||||||
|
import springfox.documentation.service.AuthorizationScope;
|
||||||
|
import springfox.documentation.service.Contact;
|
||||||
|
import springfox.documentation.service.SecurityReference;
|
||||||
|
import springfox.documentation.service.SecurityScheme;
|
||||||
|
import springfox.documentation.spi.DocumentationType;
|
||||||
|
import springfox.documentation.spi.service.contexts.SecurityContext;
|
||||||
|
import springfox.documentation.spring.web.plugins.Docket;
|
||||||
|
import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
|
||||||
|
import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
@EnableOpenApi
|
||||||
|
@Configuration
|
||||||
|
@Import({BeanValidatorPluginsConfiguration.class})
|
||||||
|
public class Knife4jAutoConfigurationConfig {
|
||||||
|
@Value("${spring.application.name}")
|
||||||
|
private String applicationName;
|
||||||
|
|
||||||
|
public Knife4jAutoConfigurationConfig() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
|
||||||
|
return new BeanPostProcessor() {
|
||||||
|
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
|
||||||
|
if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
|
||||||
|
this.customizeSpringfoxHandlerMappings(this.getHandlerMappings(bean));
|
||||||
|
}
|
||||||
|
|
||||||
|
return bean;
|
||||||
|
}
|
||||||
|
|
||||||
|
private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
|
||||||
|
List<T> copy = (List)mappings.stream().filter((mapping) -> mapping.getPatternParser() == null).collect(Collectors.toList());
|
||||||
|
mappings.clear();
|
||||||
|
mappings.addAll(copy);
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
|
||||||
|
try {
|
||||||
|
Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
|
||||||
|
field.setAccessible(true);
|
||||||
|
return (List)field.get(bean);
|
||||||
|
} catch (IllegalAccessException | IllegalArgumentException var3) {
|
||||||
|
throw new IllegalStateException(var3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean({"defaultApi"})
|
||||||
|
public Docket defaultApi() {
|
||||||
|
return (new Docket(DocumentationType.SWAGGER_2)).directModelSubstitute(LocalDateTime.class, Date.class).directModelSubstitute(LocalDate.class, String.class).directModelSubstitute(LocalTime.class, String.class).directModelSubstitute(ZonedDateTime.class, String.class).apiInfo(this.apiInfo()).select().apis(RequestHandlerSelectors.basePackage("cn.zyjblogs")).paths(PathSelectors.any()).build().securityContexts(Lists.newArrayList(new SecurityContext[]{this.securityContext(), this.securityContext()})).securitySchemes(Lists.newArrayList(new SecurityScheme[]{this.apiKey()}));
|
||||||
|
}
|
||||||
|
|
||||||
|
private ApiInfo apiInfo() {
|
||||||
|
return (new ApiInfoBuilder()).title(this.applicationName.toUpperCase() + " RESTFUL APIS").contact(new Contact("zyjblogs", "", "")).version("1.0.0").build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private ApiKey apiKey() {
|
||||||
|
return new ApiKey("BearerToken", "Authorization", "header");
|
||||||
|
}
|
||||||
|
|
||||||
|
private SecurityContext securityContext() {
|
||||||
|
return SecurityContext.builder().securityReferences(this.defaultAuth()).forPaths(PathSelectors.regex("/.*")).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<SecurityReference> defaultAuth() {
|
||||||
|
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
|
||||||
|
AuthorizationScope[] authorizationScopes = new AuthorizationScope[]{authorizationScope};
|
||||||
|
return Lists.newArrayList(new SecurityReference[]{new SecurityReference("BearerToken", authorizationScopes)});
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user