修改LIQUIBASE的加载方式

This commit is contained in:
dengqichen 2025-12-09 18:07:27 +08:00
parent f77f01689f
commit b2fff8ec8a
6 changed files with 70 additions and 29 deletions

View File

@ -27,6 +27,7 @@ public class SecurityConfig {
private final CustomAuthenticationEntryPoint customAuthenticationEntryPoint; private final CustomAuthenticationEntryPoint customAuthenticationEntryPoint;
private final JwtTokenUtil jwtTokenUtil; private final JwtTokenUtil jwtTokenUtil;
private final UserDetailsService userDetailsService; private final UserDetailsService userDetailsService;
private final SecurityWhitelistProperties whitelistProperties;
@Bean @Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
@ -37,15 +38,8 @@ public class SecurityConfig {
session.sessionCreationPolicy(SessionCreationPolicy.STATELESS) session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
) )
.authorizeHttpRequests(auth -> auth .authorizeHttpRequests(auth -> auth
.requestMatchers( .requestMatchers(whitelistProperties.getPaths().toArray(new String[0]))
"/api/v1/user/login", .permitAll()
"/api/v1/user/register",
"/api/v1/tenant/list",
"/api/v1/server-ssh/*/files/**",
"/swagger-ui/**",
"/v3/api-docs/**",
"/actuator/health"
).permitAll()
.anyRequest().authenticated() .anyRequest().authenticated()
) )
.addFilterBefore( .addFilterBefore(
@ -61,7 +55,7 @@ public class SecurityConfig {
@Bean @Bean
public JwtAuthenticationFilter jwtAuthenticationFilter() { public JwtAuthenticationFilter jwtAuthenticationFilter() {
return new JwtAuthenticationFilter(jwtTokenUtil, userDetailsService); return new JwtAuthenticationFilter(jwtTokenUtil, userDetailsService, whitelistProperties);
} }
@Bean @Bean

View File

@ -0,0 +1,25 @@
package com.qqchen.deploy.backend.framework.security.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* Security 白名单配置属性
*
* @author qqchen
* @since 2025-12-09
*/
@Data
@Component
@ConfigurationProperties(prefix = "security.whitelist")
public class SecurityWhitelistProperties {
/**
* 免认证路径列表
*/
private List<String> paths = new ArrayList<>();
}

View File

@ -7,6 +7,7 @@ import com.qqchen.deploy.backend.framework.enums.ResponseCode;
import com.qqchen.deploy.backend.framework.exception.BusinessException; import com.qqchen.deploy.backend.framework.exception.BusinessException;
import com.qqchen.deploy.backend.framework.exception.JwtAuthenticationException; import com.qqchen.deploy.backend.framework.exception.JwtAuthenticationException;
import com.qqchen.deploy.backend.framework.exception.SystemException; import com.qqchen.deploy.backend.framework.exception.SystemException;
import com.qqchen.deploy.backend.framework.security.config.SecurityWhitelistProperties;
import com.qqchen.deploy.backend.framework.security.util.JwtTokenUtil; import com.qqchen.deploy.backend.framework.security.util.JwtTokenUtil;
import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.MalformedJwtException; import io.jsonwebtoken.MalformedJwtException;
@ -27,8 +28,6 @@ import org.springframework.web.filter.OncePerRequestFilter;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@ -38,19 +37,12 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
private final UserDetailsService userDetailsService; private final UserDetailsService userDetailsService;
private static final List<String> WHITELIST = Arrays.asList( private final SecurityWhitelistProperties whitelistProperties;
"/api/v1/user/login",
"/api/v1/user/register",
"/api/v1/tenant/list",
"/swagger-ui/**",
"/v3/api-docs/**",
"/actuator/health"
);
@Override @Override
protected boolean shouldNotFilter(HttpServletRequest request) { protected boolean shouldNotFilter(HttpServletRequest request) {
String path = request.getServletPath(); String path = request.getServletPath();
return WHITELIST.stream().anyMatch(path::startsWith); return whitelistProperties.getPaths().stream().anyMatch(path::startsWith);
} }
@Override @Override

View File

@ -149,6 +149,18 @@ jwt:
secret: 'thisIsAVeryVerySecretKeyForJwtTokenGenerationAndValidation123456789' secret: 'thisIsAVeryVerySecretKeyForJwtTokenGenerationAndValidation123456789'
expiration: 86400 expiration: 86400
# Security 白名单配置
security:
whitelist:
paths:
- /api/v1/user/login
- /api/v1/user/register
- /api/v1/tenant/list
- /api/v1/server-ssh/*/files/**
- /swagger-ui/**
- /v3/api-docs/**
- /actuator/**
jackson: jackson:
time-zone: Asia/Shanghai time-zone: Asia/Shanghai

View File

@ -145,6 +145,18 @@ jwt:
secret: 'thisIsAVeryVerySecretKeyForJwtTokenGenerationAndValidation123456789' secret: 'thisIsAVeryVerySecretKeyForJwtTokenGenerationAndValidation123456789'
expiration: 86400 expiration: 86400
# Security 白名单配置
security:
whitelist:
paths:
- /api/v1/user/login
- /api/v1/user/register
- /api/v1/tenant/list
- /api/v1/server-ssh/*/files/**
- /swagger-ui/**
- /v3/api-docs/**
- /actuator/**
jackson: jackson:
time-zone: Asia/Shanghai time-zone: Asia/Shanghai

View File

@ -14,14 +14,20 @@ VALUES (
'system', NOW(), 'system', NOW(), 1, 0, 'system', NOW(), 'system', NOW(), 1, 0,
1.12, 'ALL', NOW(), 1.12, 'ALL', NOW(),
'【后端】 '【后端】
- //DEBUG - //DEBUG
- HikariCP连接泄漏检测阈值35Jenkins构建轮询时长 - HikariCP泄漏检测阈值调整为35分钟Jenkins构建轮询时长
- SSHJ底层日志屏蔽Transport/SecureRandom等无业务价值日志降级为WARN - SSH日志优化SSHJ底层日志降级为WARNTransport/SecureRandom等无业务价值日志
- INFO便 - INFO便
- Liquibase配置includeAll只扫描XML文件SQL重复执行 - Liquibase优化XML/SQL分离changes/XMLsql/SQL
- JVMCPU线 - Security优化SecurityConfig/JwtAuthenticationFilter统一使用配置文件管理免认证路径
- Actuator监控端点threaddump/heapdump/env/loggers - "系统指标"JVMCPU线
- lukuan及角色绑定/ - Actuator集成health/metrics/threaddump/heapdump/env/loggers
- SecurityWhitelistProperties配置类Security白名单
- JVM内存CPU线GC30
- 线线
- GB
- Actuator接口代理和调用方式/actuator代理配置
', ',
0, NULL, NULL, 0 0, NULL, NULL, 0
); );