春季安全性Java NoSuchMethodException:SecurityConfig。<init>()

提亚尔·巴尔比(TiarêBalbi)

我正在使用基于Java config的Spring Security在我的项目中执行配置。

只是我在初始化Spring Security时遇到问题,我在使用SecurityConfig.class类来初始化适当的设置,但是问题是此类具有需要参数的构造函数。

我将自己放在文档中:

http://docs.spring.io/spring-security/site/docs/3.2.0.RELEASE/reference/htmlsingle/#abstractsecuritywebapplicationinitializer-with-spring-mvc

public class SecurityConfig implements ConfigAttribute {
....

//~ Constructors ==================

public SecurityConfig(String config) {
    Assert.hasText(config, "You must provide a configuration attribute");
    this.attrib = config;
}
....
}

SecurityApplicationContext.java

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled=true)
@ComponentScan(basePackages="com.tiarebalbi.kupo.configuration.security")
public class SecurityApplicationContext extends WebSecurityConfigurerAdapter {

@Autowired
private DataSource dataSource;

@Autowired
private Environment env;

@Autowired
private KupoUserDetailsService userDetailService;

/**
 * @param auth {@link AuthenticationManagerBuilder}
 * @throws Exception {@link Exception} 
 */
@Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth.jdbcAuthentication()
            .dataSource(dataSource)
            .withDefaultSchema()
            .and()
        .userDetailsService(userDetailService)
        .passwordEncoder(new KupoPasswordEncoder());
}

@Override
@Autowired
public AuthenticationManager authenticationManagerBean() throws Exception {
    return super.authenticationManagerBean();
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
            .antMatchers("/public/**", "/recover-password", "/recover/**").permitAll()    
            .anyRequest().authenticated()
            .and()
        .formLogin()
            .loginPage("/login") 
            .loginProcessingUrl("/auth-verify")
            .defaultSuccessUrl("/dashboard")
            .failureUrl("/login?error")
            .permitAll()
            .and()
        .logout()
            .logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/login")
            .and()
        .rememberMe()
            .and()
        .sessionManagement()
            .maximumSessions(this.env.getRequiredProperty("security.session.max", Integer.class))
            .expiredUrl("/login?expired");
}
}

分派器Servlet初始化程序:

public class DispatcherServletInitializerContext extends AbstractAnnotationConfigDispatcherServletInitializer {

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

@Override
protected Class<?>[] getServletConfigClasses() {
    return new Class<?>[] { WebApplicationContext.class, WebSocketApplicationContext.class };
}

@Override
protected String[] getServletMappings() {
    return new String[] { "/" };
}

@Override
protected void customizeRegistration(Dynamic registration) {
    registration.setInitParameter("dispatchOptionsRequest", "true");
    registration.setAsyncSupported(true);
}


@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    super.onStartup(servletContext);
}
}

错误:

java.lang.NoSuchMethodException: org.springframework.security.access.SecurityConfig.<init>()
at java.lang.Class.getConstructor0(Class.java:2810)
at java.lang.Class.getDeclaredConstructor(Class.java:2053)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1069)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1021)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:381)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:293)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:788)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:434)
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:780)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:284)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1322)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:732)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:490)
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart(JettyWebAppContext.java:280)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:155)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
at org.eclipse.jetty.server.Server.start(Server.java:342)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
at org.eclipse.jetty.server.Server.doStart(Server.java:290)
at org.eclipse.jetty.maven.plugin.JettyServer.doStart(JettyServer.java:68)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.startJetty(AbstractJettyMojo.java:564)
at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.execute(AbstractJettyMojo.java:360)
at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute(JettyRunMojo.java:168)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
提亚尔·巴尔比(TiarêBalbi)

我通过将类设置为SecurityConfig.class @Bean并调整设置AuthenticationManager解决了该问题。

    /**
 * @return {@link SecurityConfig}
 */
@Bean
public SecurityConfig securityConfigBean() {
    SecurityConfig config = new SecurityConfig("kupo-security");
    return config;
}

/**
 * 
 * @param auth {@link AuthenticationManagerBuilder}
 * @throws Exception {@link Exception} 
 */
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth.authenticationProvider(authProviders().getDaoProvider());
}

@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
    return new ProviderManager(authProviders());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

java.lang.NoSuchMethodException: <init> []

Kotlin java.lang.NoSuchMethodException:<init>()

java.lang.NoSuchMethodException:AffirmativeBased。<init>()

java.lang.NoSuchMethodException:userAuth.User。<init>()

java.lang.NoSuchMethodException:package.ClassName。<init>()使用Class <?>

Scala案例类中的init方法的java.lang.NoSuchMethodException

安全管理面板(春季安全性)

春季安全性中谁叫安全性配置?

错误:java.lang.NoSuchMethodException:Spring MVC中的java.lang.Long。<init>()

java.lang.NoSuchMethodException: <Class>.<init>(java.lang.String) 复制自定义 Transformer 时

Java反射:原始int的构造函数原因:java.lang.NoSuchMethodException:int。<init>(int)

启动Servlet筛选器时如何解决java.lang.NoSuchMethodException:package.MyCustomFilter。<init>()

NoSuchMethodException:java.time.LocalDateTime。<init>()使用超级CSV读取CSV

自定义弹簧条件导致java.lang.NoSuchMethodException:<init>()异常

引起:java.lang.NoSuchMethodException: <init> [class android.app.Application] - viewmodel

使用Postman测试春季安全性

春季安全性和多部分

春季安全性未按预期工作

春季安全性和UserDetailsService

春季安全性,JSESSIONID复制问题

REST API的春季安全性

导致此异常的原因java.lang.RuntimeException:java.lang.NoSuchMethodException:<init> [class android.view.View]

启动服务器时发生异常:java.lang.NoSuchMethodException:org.springframework.security.authentication.ProviderManager。<init>()

引起原因:java.lang.NoSuchMethodException:<init> [class android.content.Context,接口android.util.AttributeSet]

Java-春季-由于未检测到事务而导致安全性无法正常工作

春季安全性:java.lang.ClassNotFoundException:org.springframework.dao.support.DaoSupport

Java安全性与ESAPI

Java安全性测试

静态Web服务中的春季安全性