SecurityConfig.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package cn.hobbystocks.auc.config;
  2. import cn.hobbystocks.auc.common.filter.AuthenticationFilter;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  6. import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  7. import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
  8. import org.springframework.security.config.http.SessionCreationPolicy;
  9. import org.springframework.security.web.SecurityFilterChain;
  10. import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
  11. @Configuration
  12. @EnableWebSecurity
  13. public class SecurityConfig {
  14. private final AuthenticationFilter authenticationFilter;
  15. private String [] ignoreUrl={"/actuator/**","/api/local/**","/api-docs/*","/doc.html","/webjars/**","/swagger-resources/**","/v3/api-docs/**","/swagger-ui/**"};
  16. public SecurityConfig(AuthenticationFilter authenticationFilter) {
  17. this.authenticationFilter = authenticationFilter;
  18. }
  19. @Bean
  20. public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
  21. http
  22. .csrf(AbstractHttpConfigurer::disable) // 禁用 CSRF
  23. .sessionManagement(session -> session
  24. .sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // 使用无状态会话
  25. .authorizeHttpRequests(auth -> auth
  26. .antMatchers(ignoreUrl).permitAll()
  27. .anyRequest().authenticated() // 其他请求需要身份验证
  28. )
  29. .addFilterBefore(authenticationFilter, UsernamePasswordAuthenticationFilter.class); // 添加自定义过滤器
  30. return http.build();
  31. }
  32. }