簡體   English   中英

沒有定義名為“ springSecurityFilterChain”的bean Java配置

[英]No bean named 'springSecurityFilterChain' is defined 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,但隨后顯示一個錯誤,當AppInit類工作時,在SecurityConfig中自動裝配的服務類未初始化。 每個在線示例也都像我一樣。 他們只是使用SecurityWebApplicationInitializer。

首先-將WebSecurityConfig放入

@Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { HibernateConfig.class};
    }

並為您擁有的每個CONFIG類添加@componentScan包。 我的錯誤是我以為他們彼此了解。 可能不會。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM