当我项目版本使用为springboot2.7时,spring security的配置类更改后为何会提示无法自动装配?
提示无法装配但不影响程序正常运行,但是该版本为何会出现此原因,与什么有关,对于程序会有怎样的影响?
回答:
首先,这是IDEA的提示,因为IDEA没有在spring上下文中发现对应Bean的注册,所以会高亮,不影响,IDEA还不够智能,自动配置写多了这种事经常发生,跟Spring的版本关系不大。
其次,你这里的这个提示,主要是因为没有@EnableWebSecurity
注解。
再其次,你这个Security的配法也不对,AuthenticationManager
是你不用操心的东西,第一个bean可以删了。
再再其次,放开静态资源不应该用 http.authorizeRequests().antMatcher()
而是WebSecurity.ignoring
,前者会使请求匿名通过过滤链,后者是避开过滤链,静态资源应该直接避开过滤链减少耗时
@Bean@Order(SecurityProperties.IGNORED_ORDER)
public WebSecurityCustomizer ignoringCustomizer() {
return web -> web.ignoring()
.antMatchers("/webjars/**", "/iconfont/**", "/favicon.ico", "/css/**", "/images/**", "/h-ui/**", "/js/**", "/lib/**", "/h-ui.admin/**");
}
再再再其次,login
接口放开,应该用.antMatchers("/login/**").permitAll()
而不是/login
,由于security 对于所有不公开访问的 url 都会进行 saveRequest 操作 所以 这里必须放开"/login/**" 而不是"/login",否则错误页面"/login?error" 也会被缓存至 savedRequest中,导致用户重复登录 或者覆盖掉oauth2回调
以上是 当我项目版本使用为springboot2.7时,spring security的配置类更改后为何会提示无法自动装配? 的全部内容, 来源链接: utcz.com/p/944612.html