From 82f1f5d0cf1b51a5d81915e842e01760f404fa74 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期三, 20 十月 2021 13:07:16 +0800 Subject: [PATCH] update 优化xxl-job-admin相关pr代码 增加格式化日志输出与docker镜像 --- ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java | 288 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 142 insertions(+), 146 deletions(-) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index 7866115..bb8b7f2 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -1,146 +1,142 @@ -package com.ruoyi.framework.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -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.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.authentication.UsernamePasswordAuthenticationFilter; -import org.springframework.security.web.authentication.logout.LogoutFilter; -import org.springframework.web.filter.CorsFilter; -import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; -import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; -import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; - -/** - * spring security閰嶇疆 - * - * @author ruoyi - */ -@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) -public class SecurityConfig extends WebSecurityConfigurerAdapter -{ - /** - * 鑷畾涔夌敤鎴疯璇侀�昏緫 - */ - @Autowired - private UserDetailsService userDetailsService; - - /** - * 璁よ瘉澶辫触澶勭悊绫� - */ - @Autowired - private AuthenticationEntryPointImpl unauthorizedHandler; - - /** - * 閫�鍑哄鐞嗙被 - */ - @Autowired - private LogoutSuccessHandlerImpl logoutSuccessHandler; - - /** - * token璁よ瘉杩囨护鍣� - */ - @Autowired - private JwtAuthenticationTokenFilter authenticationTokenFilter; - - /** - * 璺ㄥ煙杩囨护鍣� - */ - @Autowired - private CorsFilter corsFilter; - - /** - * 瑙e喅 鏃犳硶鐩存帴娉ㄥ叆 AuthenticationManager - * - * @return - * @throws Exception - */ - @Bean - @Override - public AuthenticationManager authenticationManagerBean() throws Exception - { - return super.authenticationManagerBean(); - } - - /** - * anyRequest | 鍖归厤鎵�鏈夎姹傝矾寰� - * access | SpringEl琛ㄨ揪寮忕粨鏋滀负true鏃跺彲浠ヨ闂� - * anonymous | 鍖垮悕鍙互璁块棶 - * denyAll | 鐢ㄦ埛涓嶈兘璁块棶 - * fullyAuthenticated | 鐢ㄦ埛瀹屽叏璁よ瘉鍙互璁块棶锛堥潪remember-me涓嬭嚜鍔ㄧ櫥褰曪級 - * hasAnyAuthority | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず鏉冮檺锛屽垯鍏朵腑浠讳綍涓�涓潈闄愬彲浠ヨ闂� - * hasAnyRole | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず瑙掕壊锛屽垯鍏朵腑浠讳綍涓�涓鑹插彲浠ヨ闂� - * hasAuthority | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず鏉冮檺锛屽垯鍏舵潈闄愬彲浠ヨ闂� - * hasIpAddress | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧずIP鍦板潃锛屽鏋滅敤鎴稩P鍜屽弬鏁板尮閰嶏紝鍒欏彲浠ヨ闂� - * hasRole | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず瑙掕壊锛屽垯鍏惰鑹插彲浠ヨ闂� - * permitAll | 鐢ㄦ埛鍙互浠绘剰璁块棶 - * rememberMe | 鍏佽閫氳繃remember-me鐧诲綍鐨勭敤鎴疯闂� - * authenticated | 鐢ㄦ埛鐧诲綍鍚庡彲璁块棶 - */ - @Override - protected void configure(HttpSecurity httpSecurity) throws Exception - { - httpSecurity - // CSRF绂佺敤锛屽洜涓轰笉浣跨敤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); - // 娣诲姞CORS filter - httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class); - httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class); - } - - - /** - * 寮烘暎鍒楀搱甯屽姞瀵嗗疄鐜� - */ - @Bean - public BCryptPasswordEncoder bCryptPasswordEncoder() - { - return new BCryptPasswordEncoder(); - } - - /** - * 韬唤璁よ瘉鎺ュ彛 - */ - @Override - protected void configure(AuthenticationManagerBuilder auth) throws Exception - { - auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder()); - } -} +package com.ruoyi.framework.config; + +import com.ruoyi.framework.config.properties.SecurityProperties; +import com.ruoyi.framework.security.filter.JwtAuthenticationTokenFilter; +import com.ruoyi.framework.security.handle.AuthenticationEntryPointImpl; +import com.ruoyi.framework.security.handle.LogoutSuccessHandlerImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +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.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.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.security.web.authentication.logout.LogoutFilter; +import org.springframework.web.filter.CorsFilter; + +/** + * spring security閰嶇疆 + * + * @author ruoyi + */ +@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) +public class SecurityConfig extends WebSecurityConfigurerAdapter +{ + /** + * 鑷畾涔夌敤鎴疯璇侀�昏緫 + */ + @Autowired + private UserDetailsService userDetailsService; + + /** + * 璁よ瘉澶辫触澶勭悊绫� + */ + @Autowired + private AuthenticationEntryPointImpl unauthorizedHandler; + + /** + * 閫�鍑哄鐞嗙被 + */ + @Autowired + private LogoutSuccessHandlerImpl logoutSuccessHandler; + + /** + * token璁よ瘉杩囨护鍣� + */ + @Autowired + private JwtAuthenticationTokenFilter authenticationTokenFilter; + + /** + * 璺ㄥ煙杩囨护鍣� + */ + @Autowired + private CorsFilter corsFilter; + + @Autowired + private SecurityProperties securityProperties; + + /** + * 瑙e喅 鏃犳硶鐩存帴娉ㄥ叆 AuthenticationManager + * + * @return + * @throws Exception + */ + @Bean + @Override + public AuthenticationManager authenticationManagerBean() throws Exception + { + return super.authenticationManagerBean(); + } + + /** + * anyRequest | 鍖归厤鎵�鏈夎姹傝矾寰� + * access | SpringEl琛ㄨ揪寮忕粨鏋滀负true鏃跺彲浠ヨ闂� + * anonymous | 鍖垮悕鍙互璁块棶 + * denyAll | 鐢ㄦ埛涓嶈兘璁块棶 + * fullyAuthenticated | 鐢ㄦ埛瀹屽叏璁よ瘉鍙互璁块棶锛堥潪remember-me涓嬭嚜鍔ㄧ櫥褰曪級 + * hasAnyAuthority | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず鏉冮檺锛屽垯鍏朵腑浠讳綍涓�涓潈闄愬彲浠ヨ闂� + * hasAnyRole | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず瑙掕壊锛屽垯鍏朵腑浠讳綍涓�涓鑹插彲浠ヨ闂� + * hasAuthority | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず鏉冮檺锛屽垯鍏舵潈闄愬彲浠ヨ闂� + * hasIpAddress | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧずIP鍦板潃锛屽鏋滅敤鎴稩P鍜屽弬鏁板尮閰嶏紝鍒欏彲浠ヨ闂� + * hasRole | 濡傛灉鏈夊弬鏁帮紝鍙傛暟琛ㄧず瑙掕壊锛屽垯鍏惰鑹插彲浠ヨ闂� + * permitAll | 鐢ㄦ埛鍙互浠绘剰璁块棶 + * rememberMe | 鍏佽閫氳繃remember-me鐧诲綍鐨勭敤鎴疯闂� + * authenticated | 鐢ㄦ埛鐧诲綍鍚庡彲璁块棶 + */ + @Override + protected void configure(HttpSecurity httpSecurity) throws Exception + { + httpSecurity + // CSRF绂佺敤锛屽洜涓轰笉浣跨敤session + .csrf().disable() + // 璁よ瘉澶辫触澶勭悊绫� + .exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and() + // 鍩轰簬token锛屾墍浠ヤ笉闇�瑕乻ession + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() + // 杩囨护璇锋眰 + .authorizeRequests() + .antMatchers( + HttpMethod.GET, + "/", + "/*.html", + "/**/*.html", + "/**/*.css", + "/**/*.js" + ).permitAll() + .antMatchers(securityProperties.getAnonymous()).anonymous() + .antMatchers(securityProperties.getPermitAll()).permitAll() + // 闄や笂闈㈠鐨勬墍鏈夎姹傚叏閮ㄩ渶瑕侀壌鏉冭璇� + .anyRequest().authenticated() + .and() + .headers().frameOptions().disable(); + httpSecurity.logout().logoutUrl(securityProperties.getLogoutUrl()).logoutSuccessHandler(logoutSuccessHandler); + // 娣诲姞JWT filter + httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); + // 娣诲姞CORS filter + httpSecurity.addFilterBefore(corsFilter, JwtAuthenticationTokenFilter.class); + httpSecurity.addFilterBefore(corsFilter, LogoutFilter.class); + } + + /** + * 寮烘暎鍒楀搱甯屽姞瀵嗗疄鐜� + */ + @Bean + public BCryptPasswordEncoder bCryptPasswordEncoder() + { + return new BCryptPasswordEncoder(); + } + + /** + * 韬唤璁よ瘉鎺ュ彛 + */ + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception + { + auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder()); + } +} -- Gitblit v1.9.3