package top.rayc.user.security; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.ProviderManager; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; import top.rayc.user.security.dsl.SecurityConfigDsl; import top.rayc.user.security.provider.UsernamePasswordAuthenticationProvider; import top.rayc.utility.security.authentication.filter.JwtAuthenticationFilter; @Configuration @EnableWebSecurity @EnableMethodSecurity(prePostEnabled = true) public class SecurityConfig { @Autowired private UsernamePasswordAuthenticationProvider usernamePasswordAuthenticationProvider; @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .csrf(csrf -> csrf.disable()) .authorizeHttpRequests(auth -> { auth.anyRequest().permitAll(); }) .sessionManagement(management -> management.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .addFilterBefore(new JwtAuthenticationFilter(), BasicAuthenticationFilter.class) .apply( new SecurityConfigDsl() ); return http.build(); } @Bean public AuthenticationManager authenticationManager() { return new ProviderManager(usernamePasswordAuthenticationProvider); } }