From 96eecc97de7fc863fc76b63294d4c12bd9683ae4 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期二, 20 五月 2025 15:36:40 +0800 Subject: [PATCH] 回款台账 --- src/main/java/com/ruoyi/framework/config/SecurityConfig.java | 118 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 61 insertions(+), 57 deletions(-) diff --git a/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index b27b165..b04beff 100644 --- a/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -2,16 +2,21 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.authentication.ProviderManager; +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; +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.WebSecurityConfigurerAdapter; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.logout.LogoutFilter; +import org.springframework.web.filter.CorsFilter; +import com.ruoyi.framework.config.properties.PermitAllUrlProperties; import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; @@ -21,8 +26,9 @@ * * @author ruoyi */ -@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) -public class SecurityConfig extends WebSecurityConfigurerAdapter +@EnableMethodSecurity(prePostEnabled = true, securedEnabled = true) +@Configuration +public class SecurityConfig { /** * 鑷畾涔夌敤鎴疯璇侀�昏緫 @@ -49,16 +55,27 @@ private JwtAuthenticationTokenFilter authenticationTokenFilter; /** - * 瑙e喅 鏃犳硶鐩存帴娉ㄥ叆 AuthenticationManager - * - * @return - * @throws Exception + * 璺ㄥ煙杩囨护鍣� + */ + @Autowired + private CorsFilter corsFilter; + + /** + * 鍏佽鍖垮悕璁块棶鐨勫湴鍧� + */ + @Autowired + private PermitAllUrlProperties permitAllUrl; + + /** + * 韬唤楠岃瘉瀹炵幇 */ @Bean - @Override - public AuthenticationManager authenticationManagerBean() throws Exception + public AuthenticationManager authenticationManager() { - return super.authenticationManagerBean(); + DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider(); + daoAuthenticationProvider.setUserDetailsService(userDetailsService); + daoAuthenticationProvider.setPasswordEncoder(bCryptPasswordEncoder()); + return new ProviderManager(daoAuthenticationProvider); } /** @@ -76,45 +93,41 @@ * rememberMe | 鍏佽閫氳繃remember-me鐧诲綍鐨勭敤鎴疯闂� * authenticated | 鐢ㄦ埛鐧诲綍鍚庡彲璁块棶 */ - @Override - protected void configure(HttpSecurity httpSecurity) throws Exception + @Bean + protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { - httpSecurity - // CRSF绂佺敤锛屽洜涓轰笉浣跨敤session - .csrf().disable() - // 璁よ瘉澶辫触澶勭悊绫� - .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and() - // 鍩轰簬token锛屾墍浠ヤ笉闇�瑕乻ession - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() - // 杩囨护璇锋眰 - .authorizeRequests() - // 瀵逛簬鐧诲綍login 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶 - .antMatchers("/login", "/captchaImage").anonymous() - .antMatchers( - HttpMethod.GET, - "/*.html", - "/**/*.html", - "/**/*.css", - "/**/*.js" - ).permitAll() - .antMatchers("/profile/**").anonymous() - .antMatchers("/common/download**").anonymous() - .antMatchers("/common/download/resource**").anonymous() - .antMatchers("/swagger-ui.html").anonymous() - .antMatchers("/swagger-resources/**").anonymous() - .antMatchers("/webjars/**").anonymous() - .antMatchers("/*/api-docs").anonymous() - .antMatchers("/druid/**").anonymous() - // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇� - .anyRequest().authenticated() - .and() - .headers().frameOptions().disable(); - httpSecurity.logout().logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler); - // 娣诲姞JWT filter - httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); + return httpSecurity + // CSRF绂佺敤锛屽洜涓轰笉浣跨敤session + .csrf(csrf -> csrf.disable()) + // 绂佺敤HTTP鍝嶅簲鏍囧ご + .headers((headersCustomizer) -> { + headersCustomizer.cacheControl(cache -> cache.disable()).frameOptions(options -> options.sameOrigin()); + }) + // 璁よ瘉澶辫触澶勭悊绫� + .exceptionHandling(exception -> exception.authenticationEntryPoint(unauthorizedHandler)) + // 鍩轰簬token锛屾墍浠ヤ笉闇�瑕乻ession + .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) + // 娉ㄨВ鏍囪鍏佽鍖垮悕璁块棶鐨剈rl + .authorizeHttpRequests((requests) -> { + permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll()); + // 瀵逛簬鐧诲綍login 娉ㄥ唽register 楠岃瘉鐮乧aptchaImage 鍏佽鍖垮悕璁块棶 + requests.antMatchers("/login", "/register", "/captchaImage").permitAll() + // 闈欐�佽祫婧愶紝鍙尶鍚嶈闂� + .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() + .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() + // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇� + .anyRequest().authenticated(); + }) + // 娣诲姞Logout filter + .logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler)) + // 娣诲姞JWT filter + .addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class) + // 娣诲姞CORS filter + .addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class) + .addFilterBefore(corsFilter, LogoutFilter.class) + .build(); } - /** * 寮烘暎鍒楀搱甯屽姞瀵嗗疄鐜� */ @@ -122,14 +135,5 @@ public BCryptPasswordEncoder bCryptPasswordEncoder() { return new BCryptPasswordEncoder(); - } - - /** - * 韬唤璁よ瘉鎺ュ彛 - */ - @Override - protected void configure(AuthenticationManagerBuilder auth) throws Exception - { - auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder()); } } -- Gitblit v1.9.3