java - 没有定义名为“springSecurityFilterChain”的 bean Java Config
问题描述
我有一个应该自己初始化过滤器链的类
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
}
但我仍然得到 noSuchBeanDefinException。
我的 webSecurityConfig
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled=true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserService userService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/admin/**")
.access("hasRole('ADMIN')").and().formLogin()
.loginPage("/login").failureUrl("/login?error")
.usernameParameter("username")
.passwordParameter("password")
.and().logout().logoutSuccessUrl("/login?logout")
.and().csrf()
.and().exceptionHandling().accessDeniedPage("/403");
}
@Bean
public PasswordEncoder passwordEncoder() {
PasswordEncoder encoder = new BCryptPasswordEncoder();
return encoder;
}
}
这里是我的 AppInitialiser
public class WebAppInit extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { HibernateConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { WebMvcConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
我尝试在 AppInit 中使用 WebSecurityConfig.class,但随后它显示一个错误,即我在 SecurityConfig 中自动装配的服务类在 AppInit 类工作时未初始化。每个在线示例也都像我一样。他们只是使用 SecurityWebApplicationInitializer 。
解决方案
首先 - 将 WebSecurityConfig 放入
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { HibernateConfig.class};
}
并为您拥有的每个 CONFIG 类添加 @componentScan 包。我的错误是我认为他们彼此了解。可能不会。
推荐阅读
- php - 活动菜单不保持活动状态并突出显示
- c++ - 制作指向结构数组的指针
- c# - 有谁知道如何修复:System.ComponentModel.Win32Exception:'系统找不到指定的文件'来自 Visual Studio?
- javascript - 我一直在尝试通过用户输入使用 for 循环,但由于某种原因它既不显示错误也不显示输出
- loops - 当使用 while 循环输入负数时,停止接收 Arraylist 的用户输入
- java - Authenticator#requestPasswordAuthentication 的用例
- flutter - 我有一个表单,其中有两个文本输入。当用户在一个输入中输入文本并转到另一个时,文本消失了。该怎么办?
- python - get secrets from enterprise vault using python
- typescript - Use simple functions instead of decorators in class-validator
- python-3.x - Time Complexity of python's deque.Insert(index,element)