WebSecurityConfigurerAdapter过时的替代方式
SpringSecurity配置,用着用着就过期了,而且还报unsafe异常,真的是不让懒人活着啊。
万能的网络上找答案
找了一圈,都说用 @Bean的方式注入,代替继承WebSecurityConfigurerAdapter。
试了一下,老是报异常:
Found WebSecurityConfigurerAdapter as well as SecurityFilterChain. Please select just one.
我已经把
@EnableWebSecurity
去掉了,还是报这个,不知道哪里又加载了
WebSecurityConfiguration
这个类了。
索性不管了,直接覆盖。
看源码
-
-
-
-
public class WebSecurityConfiguration implements ImportAware, BeanClassLoaderAware {
-
‘’‘’‘’‘’
-
-
-
-
public SecurityExpressionHandler<FilterInvocation> webSecurityExpressionHandler() {
-
return this.webSecurity.getExpressionHandler();
-
}
-
-
-
-
-
public Filter springSecurityFilterChain() throws Exception {
-
boolean hasConfigurers = this.webSecurityConfigurers != null && !this.webSecurityConfigurers.isEmpty();
-
boolean hasFilterChain = !this.securityFilterChains.isEmpty();
-
Assert.state(!hasConfigurers || !hasFilterChain, "Found WebSecurityConfigurerAdapter as well as SecurityFilterChain. Please select just one.");
-
if (!hasConfigurers && !hasFilterChain) {
-
WebSecurityConfigurerAdapter adapter = (WebSecurityConfigurerAdapter)this.objectObjectPostProcessor.postProcess(new WebSecurityConfigurerAdapter() {
-
});
-
this.webSecurity.apply(adapter);
-
}
-
-
Iterator var7 = this.securityFilterChains.iterator();
-
-
while(true) {
-
while(var7.hasNext()) {
-
SecurityFilterChain securityFilterChain = (SecurityFilterChain)var7.next();
-
this.webSecurity.addSecurityFilterChainBuilder(() -> {
-
return securityFilterChain;
-
});
-
Iterator var5 = securityFilterChain.getFilters().iterator();
-
-
while(var5.hasNext()) {
-
Filter filter = (Filter)var5.next();
-
if (filter instanceof FilterSecurityInterceptor) {
-
this.webSecurity.securityInterceptor((FilterSecurityInterceptor)filter);
-
break;
-
}
-
}
-
}
-
-
var7 = this.webSecurityCustomizers.iterator();
-
-
while(var7.hasNext()) {
-
WebSecurityCustomizer customizer = (WebSecurityCustomizer)var7.next();
-
customizer.customize(this.webSecurity);
-
}
-
-
return (Filter)this.webSecurity.build();
-
}
-
}
-
-
、、、、、、、
-
}
就是 Assert.state(!hasConfigurers || !hasFilterChain, "Found WebSecurityConfigurerAdapter as well as SecurityFilterChain. Please select just one.");
这句报出来的。
-
-
-
-
public class WebSecurityConfig
-
{
-
-
private final AuthenticationConfiguration authenticationConfiguration;
-
-
-
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
-
http.authorizeRequests()
-
.requestMatchers(EndpointRequest.toAnyEndpoint()).permitAll()
-
.antMatchers("/**").permitAll()
-
.anyRequest().authenticated();
-
return http.build();
-
}
-
-
-
-
public AuthenticationManager authenticationManager() throws Exception{
-
AuthenticationManager authenticationManager = authenticationConfiguration.getAuthenticationManager();
-
return authenticationManager;
-
}
-
-
-
-
public PasswordEncoder passwordEncoder() {
-
return new BCryptPasswordEncoder();
-
}
-
-
}
启动不了,看看异常:
-
Description:
-
-
The bean 'springSecurityFilterChain', defined in class path resource [com/micro/exchange/auth/config/WebSecurityConfig.class], could not be registered. A bean with that name has already been defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class] and overriding is disabled.
-
-
Action:
-
-
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
挺贴心,还给了解决方案,咱们就是为了覆盖,不能修改名字,选第二个吧
-
spring:
-
main:
-
allow-bean-definition-overriding: true
修改完,启动,还是没启动起来,晕了。
AuthorizationServerConfigurerAdapter 继承类报 authenticationManager空指针
原因:继承类先于WebSecurityConfig类加载了。
网上说给WebSecurityConfig 加 @Order, 但是没有生效,不知道是缓存还是什么原因。
幸好有
@AutoConfigureAfter(WebSecurityConfig.class)
启动,调用,没有生效
这篇文章比较实用,顺序生效了。
问题解决。
解决问题还是得撸下源码,才能真正解决问题
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfkjkhj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01