Spring 安全性 @EnableWebSecurity 创建名为"objectPostProcessor"的 Bean 时出错



im使用弹簧安全注释保护我的Spring MVC应用程序。添加注释@EnableWebSecurity后,我有这样的stacktrace:

stacktrace:http://pastebin.com/szigdd69

我的源代码:

webappinitializer.class

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer  {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[]{RootConfig.class};
    }
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[]{WebConfig.class};
    }
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

rootconfig.class:

@Configuration
@ComponentScan(basePackages={"com.antek.demoMVC"},
        excludeFilters={@Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)})
public class RootConfig {
    @Bean
    public TemplateEngine templateEngine(TemplateResolver templateResolver){
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        return templateEngine;
    }
    @Bean
    public TemplateResolver templateResolver(){
        TemplateResolver templateResolver = new ServletContextTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML5);
        return templateResolver;
    }
}

webconfig.class:

@Configuration
@EnableWebMvc
@ComponentScan("com.antek.demoMVC")
public class WebConfig extends WebMvcConfigurerAdapter{
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        super.configureDefaultServletHandling(configurer);
        configurer.enable();
    }

    @Bean
    public ViewResolver viewResolver(SpringTemplateEngine templateEngine){
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine);
        return viewResolver;        
    }
}

securitywebinitializer.class:

public class SecurityWebInitializer extends AbstractSecurityWebApplicationInitializer {
//nothing to do here.
}

webSecurityConfig.class:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin().and()
            .httpBasic();
    }
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
        .withUser("user").password("1234").roles("USER")
        .and()
        .withUser("Admin").password("admin123").roles("USER","ADMIN");
    }
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>

我注意到在WebSecurityConfig.class上添加@EnableWebSecurity注释会导致异常。任何想法如何解决此问题?

我面临同一问题,因此我更新了我的春季安全性依赖性,其版本没有添加。

<version>2.6.4</version>

相关内容

  • 没有找到相关文章

最新更新