From cfe049492f81d2c650a2b17348593edbc5054498 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期三, 18 三月 2026 07:52:44 +0800
Subject: [PATCH] #3.5
---
rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java | 89 +++++++++++++++++++++-----------------------
1 files changed, 43 insertions(+), 46 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
index 3ba527a..d38b9be 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
@@ -6,22 +6,20 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.access.AccessDeniedException;
-import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint;
+import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
import java.io.IOException;
/**
@@ -30,10 +28,10 @@
*/
@Configuration
@EnableWebSecurity
-@EnableGlobalMethodSecurity(prePostEnabled = true)
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
+@EnableMethodSecurity(prePostEnabled = true)
+public class SecurityConfig {
- public static final String[] FILTER_PATH = new String[]{
+ public static final String[] FILTER_PATH = new String[] {
"/demo/**",
"/test/**",
"/system/info",
@@ -41,6 +39,8 @@
"/email/code",
"/pda/login",
"/erp/**",
+ "/base/**",
+ "/order/**",
"/login",
"/register",
"/druid/**",
@@ -51,7 +51,12 @@
"/v2/api-docs/**",
"/v3/api-docs/**",
"/swagger-ui/**",
- "/ws/**"
+ "/ws/**",
+ "/wcs/**",
+ "/monitor/**",
+ "/mcp/**",
+ "/ai/mcp",
+ "/mes/**"
};
@Resource
@@ -61,41 +66,26 @@
@Resource
private JwtAuthenticationFilter jwtAuthenticationFilter;
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http.authorizeRequests()
- .antMatchers(HttpMethod.OPTIONS, "/**")
- .permitAll()
- .antMatchers(HttpMethod.GET, "/file/**", "/captcha", "/")
- .permitAll()
- .antMatchers(FILTER_PATH)
- .permitAll()
- .anyRequest()
- .authenticated()
- .and()
- .sessionManagement()
- .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
- .and()
- .csrf()
- .disable()
- .cors()
- .and()
- .logout()
- .disable()
- .headers()
- .frameOptions()
- .disable()
- .and()
- .exceptionHandling()
- .accessDeniedHandler(jwtAccessDeniedHandler)
- .authenticationEntryPoint(jwtAuthenticationEntryPoint)
- .and()
- .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
- }
-
@Bean
- public BCryptPasswordEncoder bCryptPasswordEncoder() {
- return new BCryptPasswordEncoder();
+ public SecurityFilterChain securityFilterChain(org.springframework.security.config.annotation.web.builders.HttpSecurity http)
+ throws Exception {
+ http.authorizeHttpRequests(authorize -> authorize
+ .requestMatchers(HttpMethod.OPTIONS, "/**").permitAll()
+ .requestMatchers(HttpMethod.GET, "/file/**", "/captcha", "/").permitAll()
+ .requestMatchers(FILTER_PATH).permitAll()
+ .anyRequest().authenticated())
+ .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
+ .csrf(csrf -> csrf.disable())
+ .cors(cors -> {
+ })
+ .logout(logout -> logout.disable())
+ .headers(headers -> headers.frameOptions(frameOptions -> frameOptions.disable()))
+ .exceptionHandling(exceptionHandling -> exceptionHandling
+ .accessDeniedHandler(jwtAccessDeniedHandler)
+ .authenticationEntryPoint(jwtAuthenticationEntryPoint))
+ .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
+
+ return http.build();
}
// 娌℃湁璁块棶鏉冮檺寮傚父澶勭悊
@@ -105,6 +95,9 @@
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException e)
throws IOException, ServletException {
+ if (response.isCommitted()) {
+ return;
+ }
CommonUtil.responseError(response, Constants.UNAUTHORIZED_CODE, Constants.UNAUTHORIZED_MSG, e.getMessage());
}
@@ -117,6 +110,9 @@
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e)
throws IOException, ServletException {
+ if (response.isCommitted()) {
+ return;
+ }
CommonUtil.responseError(response, Constants.UNAUTHENTICATED_CODE, Constants.UNAUTHENTICATED_MSG,
e.getMessage());
}
@@ -124,3 +120,4 @@
}
}
+
--
Gitblit v1.9.1