Commit 1b3ff0e7d1beb0522907ac22b614ae6b61962856
1 parent
7f8f79f9
fix: WebSecurityConfigurerAdapter 过期
Showing
3 changed files
with
25 additions
and
17 deletions
yudao-example/yudao-sso-demo-by-code/src/main/java/cn/iocoder/yudao/ssodemo/framework/config/SecurityConfiguration.java
| ... | ... | @@ -2,17 +2,20 @@ package cn.iocoder.yudao.ssodemo.framework.config; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.ssodemo.framework.core.filter.TokenAuthenticationFilter; |
| 4 | 4 | import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl; |
| 5 | +import org.springframework.context.annotation.Bean; | |
| 5 | 6 | import org.springframework.context.annotation.Configuration; |
| 6 | 7 | import org.springframework.http.HttpMethod; |
| 7 | 8 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; |
| 8 | -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; | |
| 9 | +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; | |
| 9 | 10 | import org.springframework.security.web.AuthenticationEntryPoint; |
| 11 | +import org.springframework.security.web.SecurityFilterChain; | |
| 10 | 12 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; |
| 11 | 13 | |
| 12 | 14 | import javax.annotation.Resource; |
| 13 | 15 | |
| 14 | 16 | @Configuration(proxyBeanMethods = false) |
| 15 | -public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | |
| 17 | +@EnableWebSecurity | |
| 18 | +public class SecurityConfiguration{ | |
| 16 | 19 | |
| 17 | 20 | @Resource |
| 18 | 21 | private TokenAuthenticationFilter tokenAuthenticationFilter; |
| ... | ... | @@ -22,8 +25,8 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { |
| 22 | 25 | @Resource |
| 23 | 26 | private AuthenticationEntryPoint authenticationEntryPoint; |
| 24 | 27 | |
| 25 | - @Override | |
| 26 | - protected void configure(HttpSecurity httpSecurity) throws Exception { | |
| 28 | + @Bean | |
| 29 | + protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { | |
| 27 | 30 | // 设置 URL 安全权限 |
| 28 | 31 | httpSecurity.csrf().disable() // 禁用 CSRF 保护 |
| 29 | 32 | .authorizeRequests() |
| ... | ... | @@ -43,6 +46,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { |
| 43 | 46 | |
| 44 | 47 | // 添加 Token Filter |
| 45 | 48 | httpSecurity.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); |
| 49 | + return httpSecurity.build(); | |
| 46 | 50 | } |
| 47 | 51 | |
| 48 | 52 | } | ... | ... |
yudao-example/yudao-sso-demo-by-password/src/main/java/cn/iocoder/yudao/ssodemo/framework/config/SecurityConfiguration.java
| ... | ... | @@ -2,17 +2,20 @@ package cn.iocoder.yudao.ssodemo.framework.config; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.ssodemo.framework.core.filter.TokenAuthenticationFilter; |
| 4 | 4 | import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl; |
| 5 | +import org.springframework.context.annotation.Bean; | |
| 5 | 6 | import org.springframework.context.annotation.Configuration; |
| 6 | 7 | import org.springframework.http.HttpMethod; |
| 7 | 8 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; |
| 8 | -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; | |
| 9 | +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; | |
| 9 | 10 | import org.springframework.security.web.AuthenticationEntryPoint; |
| 11 | +import org.springframework.security.web.SecurityFilterChain; | |
| 10 | 12 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; |
| 11 | 13 | |
| 12 | 14 | import javax.annotation.Resource; |
| 13 | 15 | |
| 14 | 16 | @Configuration(proxyBeanMethods = false) |
| 15 | -public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | |
| 17 | +@EnableWebSecurity | |
| 18 | +public class SecurityConfiguration { | |
| 16 | 19 | |
| 17 | 20 | @Resource |
| 18 | 21 | private TokenAuthenticationFilter tokenAuthenticationFilter; |
| ... | ... | @@ -22,8 +25,8 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { |
| 22 | 25 | @Resource |
| 23 | 26 | private AuthenticationEntryPoint authenticationEntryPoint; |
| 24 | 27 | |
| 25 | - @Override | |
| 26 | - protected void configure(HttpSecurity httpSecurity) throws Exception { | |
| 28 | + @Bean | |
| 29 | + protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { | |
| 27 | 30 | // 设置 URL 安全权限 |
| 28 | 31 | httpSecurity.csrf().disable() // 禁用 CSRF 保护 |
| 29 | 32 | .authorizeRequests() |
| ... | ... | @@ -43,6 +46,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { |
| 43 | 46 | |
| 44 | 47 | // 添加 Token Filter |
| 45 | 48 | httpSecurity.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); |
| 49 | + return httpSecurity.build(); | |
| 46 | 50 | } |
| 47 | 51 | |
| 48 | 52 | } | ... | ... |
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java
| ... | ... | @@ -5,16 +5,16 @@ import cn.iocoder.yudao.framework.web.config.WebProperties; |
| 5 | 5 | import com.google.common.collect.HashMultimap; |
| 6 | 6 | import com.google.common.collect.Multimap; |
| 7 | 7 | import org.springframework.boot.autoconfigure.AutoConfiguration; |
| 8 | -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; | |
| 9 | 8 | import org.springframework.context.ApplicationContext; |
| 10 | 9 | import org.springframework.context.annotation.Bean; |
| 11 | 10 | import org.springframework.http.HttpMethod; |
| 12 | 11 | import org.springframework.security.authentication.AuthenticationManager; |
| 12 | +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; | |
| 13 | 13 | import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; |
| 14 | 14 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; |
| 15 | -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; | |
| 16 | 15 | import org.springframework.security.config.http.SessionCreationPolicy; |
| 17 | 16 | import org.springframework.security.web.AuthenticationEntryPoint; |
| 17 | +import org.springframework.security.web.SecurityFilterChain; | |
| 18 | 18 | import org.springframework.security.web.access.AccessDeniedHandler; |
| 19 | 19 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; |
| 20 | 20 | import org.springframework.web.method.HandlerMethod; |
| ... | ... | @@ -34,7 +34,7 @@ import java.util.Set; |
| 34 | 34 | */ |
| 35 | 35 | @AutoConfiguration |
| 36 | 36 | @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) |
| 37 | -public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { | |
| 37 | +public class YudaoWebSecurityConfigurerAdapter { | |
| 38 | 38 | |
| 39 | 39 | @Resource |
| 40 | 40 | private WebProperties webProperties; |
| ... | ... | @@ -72,11 +72,9 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap |
| 72 | 72 | * 由于 Spring Security 创建 AuthenticationManager 对象时,没声明 @Bean 注解,导致无法被注入 |
| 73 | 73 | * 通过覆写父类的该方法,添加 @Bean 注解,解决该问题 |
| 74 | 74 | */ |
| 75 | - @Override | |
| 76 | 75 | @Bean |
| 77 | - @ConditionalOnMissingBean(AuthenticationManager.class) | |
| 78 | - public AuthenticationManager authenticationManagerBean() throws Exception { | |
| 79 | - return super.authenticationManagerBean(); | |
| 76 | + public AuthenticationManager authenticationManagerBean(AuthenticationConfiguration authenticationConfiguration) throws Exception { | |
| 77 | + return authenticationConfiguration.getAuthenticationManager(); | |
| 80 | 78 | } |
| 81 | 79 | |
| 82 | 80 | /** |
| ... | ... | @@ -96,8 +94,8 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap |
| 96 | 94 | * rememberMe | 允许通过remember-me登录的用户访问 |
| 97 | 95 | * authenticated | 用户登录后可访问 |
| 98 | 96 | */ |
| 99 | - @Override | |
| 100 | - protected void configure(HttpSecurity httpSecurity) throws Exception { | |
| 97 | + @Bean | |
| 98 | + protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { | |
| 101 | 99 | // 登出 |
| 102 | 100 | httpSecurity |
| 103 | 101 | // 开启跨域 |
| ... | ... | @@ -141,6 +139,8 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap |
| 141 | 139 | |
| 142 | 140 | // 添加 Token Filter |
| 143 | 141 | httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); |
| 142 | + | |
| 143 | + return httpSecurity.build(); | |
| 144 | 144 | } |
| 145 | 145 | |
| 146 | 146 | private String buildAppApi(String url) { | ... | ... |