简体   繁体   English

创建在ServletContext中定义的名称为“ authenticationmanager”的bean时出错

[英]Error creating bean with name 'authenticationmanager' defined in ServletContext

I just started to learn Spring Security and have some trouble. 我刚刚开始学习Spring Security并遇到了一些麻烦。 I want to configure User login on page with password and username which stored in database. 我想使用存储在数据库中的密码和用户名在页面上配置用户登录。 I use Hibernate and spring 4.3 along with MySQL to store data.i was trying to login using DAO Authentication using spring but i'm struck here. 我使用Hibernate和spring 4.3以及MySQL来存储数据。我试图使用spring的DAO身份验证进行登录,但是我被打中了。 please help me out.. 请帮帮我..

security-context.xml security-context.xml

<!-- custom login Authentication/form -->
        <http use-expressions="true" auto-config="true" >
            <intercept-url pattern="/index*" access="hasRole('ROLE_STUDENT')"/>
            <intercept-url pattern="/resources/**" access="permitAll" />  

            <form-login login-page="/login"  
                        username-parameter="email" 
                        password-parameter="password"
                        default-target-url="/default"
                        authentication-failure-url="/loginfailed"/>
            <logout logout-success-url="/index"/>
            <csrf/>
        </http>

        <b:bean id="daoAuthenticationprovider" class="org.springframework.security.authentication.dao.DaoAuthenticationProvider" >
            <b:property name="userDetailService" ref="userDetailService"></b:property>
        </b:bean>
        <b:bean id="authenticationmanager" class="org.springframework.security.authentication.ProviderManager">
            <b:property name="providers">
                <b:list>
                    <b:ref bean="daoAuthenticationprovider"/>
                </b:list>
            </b:property>
        </b:bean>

        <authentication-manager>
            <authentication-provider user-service-ref="userDetailService">
                <!-- <password-encoder hash="md5"></password-encoder> -->
            </authentication-provider>
        </authentication-manager>

Spring-servlet 春季小程序

<context:annotation-config />
    <context:component-scan base-package="com.internbridge" />

    <!-- to prevent browser back button on displaying secure resource after logout -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="cacheSeconds" value="0"></property>
    </bean>


    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
        p:location="/WEB-INF/jdbc.properties" />

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close" p:driverClassName="${jdbc.driverClassName}"
        p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" p:password="${jdbc.password}" />
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>
        <property name="configurationClass">
            <value>org.hibernate.cfg.AnnotationConfiguration</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${jdbc.dialect}</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
    </bean>
    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <tx:annotation-driven />
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean> 
<!-- Spring Internationalizations -->   
    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages/messages" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>

    <bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
        <property name="defaultLocale" value="tl" />
    </bean>

    <bean id="localeChangeInterceptor"
        class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
        <property name="paramName" value="language" />
    </bean>

    <bean id="handlerMapping"
        class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <property name="interceptors">
            <ref bean="localeChangeInterceptor" />
        </property>
    </bean>

    <mvc:resources mapping="/resources/**" location="/resources/" />
    <mvc:annotation-driven />

web.xml web.xml

<display-name>InternBridge</display-name>

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    <!-- Spring initialization -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/security-context.xml,
            /WEB-INF/spring-servlet.xml
        </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Spring security configuration -->
    <!-- filter to use spring security, be sure to use suggested name "springSecurityFilterchain"-->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- Spring MVC or Servlet Mapping -->
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

console 安慰

ERROR: org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationmanager' defined in ServletContext resource [/WEB-INF/security-context.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.authentication.ProviderManager]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.security.authentication.ProviderManager.<init>()
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1155)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.security.authentication.ProviderManager]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.security.authentication.ProviderManager.<init>()
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:85)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1147)
    ... 22 more
Caused by: java.lang.NoSuchMethodException: org.springframework.security.authentication.ProviderManager.<init>()
    at java.lang.Class.getConstructor0(Class.java:3082)
    at java.lang.Class.getDeclaredConstructor(Class.java:2178)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80)
    ... 23 more

As per the stack trace, the org.springframework.security.authentication.ProviderManager class does not have a default constructor. 根据堆栈跟踪, org.springframework.security.authentication.ProviderManager类没有默认构造函数。 You will need to specify the providers when defining the bean. 定义Bean时需要指定提供程序。 Here is an example. 这是一个例子。

How to set-up and configure a ProviderManager using Spring Security namespace? 如何使用Spring Security名称空间设置和配置ProviderManager?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 BeanCreationException:创建在ServletContext中定义的名称为“ /”的bean时出错 - BeanCreationException: Error creating bean with name '/' defined in ServletContext 创建在ServletContext中定义的名称为“ dataSource”的bean时出错 - Error creating bean with name 'dataSource' defined in ServletContext 创建在ServletContext资源中定义的名称为&#39;entityManagerFactory&#39;的bean时出错(持久性错误) - Error creating bean with name 'entityManagerFactory' defined in ServletContext resource (persistance errors) 创建在ServletContext资源中定义的名称为&#39;sessionFactory&#39;的bean时出错 - Error creating bean with name 'sessionFactory' defined in ServletContext resource 创建在ServletContext资源中定义的名称为&#39;pluginManager&#39;的bean时出错 - Error creating bean with name 'pluginManager' defined in ServletContext resource 创建在ServletContext资源中定义的名称为“ interceptor”的bean时出错 - Error creating bean with name 'interceptor' defined in ServletContext resource 创建在ServletContext资源中定义的名称为&#39;entityManagerFactory&#39;的bean时出错 - Error creating bean with name 'entityManagerFactory' defined in ServletContext resource 创建在ServletContext资源中定义的名称为&#39;jsonView&#39;的bean时出错 - Error creating bean with name 'jsonView' defined in ServletContext resource 创建在ServletContext资源中定义的名称为&#39;grailsApplication&#39;的bean时出错 - Error creating bean with name 'grailsApplication' defined in ServletContext resource 创建applicationContext.xml时出错:创建在ServletContext资源中定义名为&#39;sessionFactory&#39;的bean时出错 - Error creating applicationContext.xml: Error creating bean with name 'sessionFactory' defined in ServletContext resource
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM