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,17 +2,20 @@ package cn.iocoder.yudao.ssodemo.framework.config; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.ssodemo.framework.core.filter.TokenAuthenticationFilter; | 3 | import cn.iocoder.yudao.ssodemo.framework.core.filter.TokenAuthenticationFilter; |
| 4 | import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl; | 4 | import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl; |
| 5 | +import org.springframework.context.annotation.Bean; | ||
| 5 | import org.springframework.context.annotation.Configuration; | 6 | import org.springframework.context.annotation.Configuration; |
| 6 | import org.springframework.http.HttpMethod; | 7 | import org.springframework.http.HttpMethod; |
| 7 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; | 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 | import org.springframework.security.web.AuthenticationEntryPoint; | 10 | import org.springframework.security.web.AuthenticationEntryPoint; |
| 11 | +import org.springframework.security.web.SecurityFilterChain; | ||
| 10 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; | 12 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; |
| 11 | 13 | ||
| 12 | import javax.annotation.Resource; | 14 | import javax.annotation.Resource; |
| 13 | 15 | ||
| 14 | @Configuration(proxyBeanMethods = false) | 16 | @Configuration(proxyBeanMethods = false) |
| 15 | -public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | 17 | +@EnableWebSecurity |
| 18 | +public class SecurityConfiguration{ | ||
| 16 | 19 | ||
| 17 | @Resource | 20 | @Resource |
| 18 | private TokenAuthenticationFilter tokenAuthenticationFilter; | 21 | private TokenAuthenticationFilter tokenAuthenticationFilter; |
| @@ -22,8 +25,8 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | @@ -22,8 +25,8 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | ||
| 22 | @Resource | 25 | @Resource |
| 23 | private AuthenticationEntryPoint authenticationEntryPoint; | 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 | // 设置 URL 安全权限 | 30 | // 设置 URL 安全权限 |
| 28 | httpSecurity.csrf().disable() // 禁用 CSRF 保护 | 31 | httpSecurity.csrf().disable() // 禁用 CSRF 保护 |
| 29 | .authorizeRequests() | 32 | .authorizeRequests() |
| @@ -43,6 +46,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | @@ -43,6 +46,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | ||
| 43 | 46 | ||
| 44 | // 添加 Token Filter | 47 | // 添加 Token Filter |
| 45 | httpSecurity.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); | 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,17 +2,20 @@ package cn.iocoder.yudao.ssodemo.framework.config; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.ssodemo.framework.core.filter.TokenAuthenticationFilter; | 3 | import cn.iocoder.yudao.ssodemo.framework.core.filter.TokenAuthenticationFilter; |
| 4 | import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl; | 4 | import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl; |
| 5 | +import org.springframework.context.annotation.Bean; | ||
| 5 | import org.springframework.context.annotation.Configuration; | 6 | import org.springframework.context.annotation.Configuration; |
| 6 | import org.springframework.http.HttpMethod; | 7 | import org.springframework.http.HttpMethod; |
| 7 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; | 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 | import org.springframework.security.web.AuthenticationEntryPoint; | 10 | import org.springframework.security.web.AuthenticationEntryPoint; |
| 11 | +import org.springframework.security.web.SecurityFilterChain; | ||
| 10 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; | 12 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; |
| 11 | 13 | ||
| 12 | import javax.annotation.Resource; | 14 | import javax.annotation.Resource; |
| 13 | 15 | ||
| 14 | @Configuration(proxyBeanMethods = false) | 16 | @Configuration(proxyBeanMethods = false) |
| 15 | -public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | 17 | +@EnableWebSecurity |
| 18 | +public class SecurityConfiguration { | ||
| 16 | 19 | ||
| 17 | @Resource | 20 | @Resource |
| 18 | private TokenAuthenticationFilter tokenAuthenticationFilter; | 21 | private TokenAuthenticationFilter tokenAuthenticationFilter; |
| @@ -22,8 +25,8 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | @@ -22,8 +25,8 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | ||
| 22 | @Resource | 25 | @Resource |
| 23 | private AuthenticationEntryPoint authenticationEntryPoint; | 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 | // 设置 URL 安全权限 | 30 | // 设置 URL 安全权限 |
| 28 | httpSecurity.csrf().disable() // 禁用 CSRF 保护 | 31 | httpSecurity.csrf().disable() // 禁用 CSRF 保护 |
| 29 | .authorizeRequests() | 32 | .authorizeRequests() |
| @@ -43,6 +46,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | @@ -43,6 +46,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { | ||
| 43 | 46 | ||
| 44 | // 添加 Token Filter | 47 | // 添加 Token Filter |
| 45 | httpSecurity.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); | 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,16 +5,16 @@ import cn.iocoder.yudao.framework.web.config.WebProperties; | ||
| 5 | import com.google.common.collect.HashMultimap; | 5 | import com.google.common.collect.HashMultimap; |
| 6 | import com.google.common.collect.Multimap; | 6 | import com.google.common.collect.Multimap; |
| 7 | import org.springframework.boot.autoconfigure.AutoConfiguration; | 7 | import org.springframework.boot.autoconfigure.AutoConfiguration; |
| 8 | -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; | ||
| 9 | import org.springframework.context.ApplicationContext; | 8 | import org.springframework.context.ApplicationContext; |
| 10 | import org.springframework.context.annotation.Bean; | 9 | import org.springframework.context.annotation.Bean; |
| 11 | import org.springframework.http.HttpMethod; | 10 | import org.springframework.http.HttpMethod; |
| 12 | import org.springframework.security.authentication.AuthenticationManager; | 11 | import org.springframework.security.authentication.AuthenticationManager; |
| 12 | +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; | ||
| 13 | import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; | 13 | import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; |
| 14 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; | 14 | import org.springframework.security.config.annotation.web.builders.HttpSecurity; |
| 15 | -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; | ||
| 16 | import org.springframework.security.config.http.SessionCreationPolicy; | 15 | import org.springframework.security.config.http.SessionCreationPolicy; |
| 17 | import org.springframework.security.web.AuthenticationEntryPoint; | 16 | import org.springframework.security.web.AuthenticationEntryPoint; |
| 17 | +import org.springframework.security.web.SecurityFilterChain; | ||
| 18 | import org.springframework.security.web.access.AccessDeniedHandler; | 18 | import org.springframework.security.web.access.AccessDeniedHandler; |
| 19 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; | 19 | import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; |
| 20 | import org.springframework.web.method.HandlerMethod; | 20 | import org.springframework.web.method.HandlerMethod; |
| @@ -34,7 +34,7 @@ import java.util.Set; | @@ -34,7 +34,7 @@ import java.util.Set; | ||
| 34 | */ | 34 | */ |
| 35 | @AutoConfiguration | 35 | @AutoConfiguration |
| 36 | @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) | 36 | @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) |
| 37 | -public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { | 37 | +public class YudaoWebSecurityConfigurerAdapter { |
| 38 | 38 | ||
| 39 | @Resource | 39 | @Resource |
| 40 | private WebProperties webProperties; | 40 | private WebProperties webProperties; |
| @@ -72,11 +72,9 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap | @@ -72,11 +72,9 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap | ||
| 72 | * 由于 Spring Security 创建 AuthenticationManager 对象时,没声明 @Bean 注解,导致无法被注入 | 72 | * 由于 Spring Security 创建 AuthenticationManager 对象时,没声明 @Bean 注解,导致无法被注入 |
| 73 | * 通过覆写父类的该方法,添加 @Bean 注解,解决该问题 | 73 | * 通过覆写父类的该方法,添加 @Bean 注解,解决该问题 |
| 74 | */ | 74 | */ |
| 75 | - @Override | ||
| 76 | @Bean | 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,8 +94,8 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap | ||
| 96 | * rememberMe | 允许通过remember-me登录的用户访问 | 94 | * rememberMe | 允许通过remember-me登录的用户访问 |
| 97 | * authenticated | 用户登录后可访问 | 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 | httpSecurity | 100 | httpSecurity |
| 103 | // 开启跨域 | 101 | // 开启跨域 |
| @@ -141,6 +139,8 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap | @@ -141,6 +139,8 @@ public class YudaoWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdap | ||
| 141 | 139 | ||
| 142 | // 添加 Token Filter | 140 | // 添加 Token Filter |
| 143 | httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); | 141 | httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); |
| 142 | + | ||
| 143 | + return httpSecurity.build(); | ||
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | private String buildAppApi(String url) { | 146 | private String buildAppApi(String url) { |