Java BeanCreationException:创建名为';org.springframework.security.authenticationManager';
请帮我解决这个问题,我最近两天一直在忙这个。我使用的是SpringMVC+SpringSecurity+hibernate,当我尝试在AuthenticationManager中使用UserAuthenticationProvider时,我遇到了这个问题,我不知道代码中出了什么问题。任何帮助都将不胜感激。谢谢 org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.security.authenticationManager”的bean时出错:无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义) org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:250) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1049) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:953) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490) 位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 位于org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 位于org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 位于org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 位于org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 位于org.springframework.security.config.authentication.AuthenticationManagerFactoryBean.getObject(AuthenticationManagerFactoryBean.java:28) 位于org.springframework.security.config.authentication.AuthenticationManagerFactoryBean.getObject(AuthenticationManagerFactoryBean.java:20) 位于org.springframework.beans.factory.support.FactoryBeanRegistrySupport.dogetObject fromFactoryBean(FactoryBeanRegistrySupport.java:142) ... 73多Java BeanCreationException:创建名为';org.springframework.security.authenticationManager';,java,xml,Java,Xml,请帮我解决这个问题,我最近两天一直在忙这个。我使用的是SpringMVC+SpringSecurity+hibernate,当我尝试在AuthenticationManager中使用UserAuthenticationProvider时,我遇到了这个问题,我不知道代码中出了什么问题。任何帮助都将不胜感激。谢谢 org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.security.auth
Web.xml
<servlet>
<servlet-name>sdnext</servlet-name>
<servlet- class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>sdnext</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/sdnext-servlet.xml,
/WEB-INF/sdnext-security.xml
</param-value>
</context-param>
<!-- Spring Security -->
<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>
<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>com.box.practice.common.web.AuthFilter</filter-class>
<init-param>
<param-name>host</param-name>
<param-value>http://172.17.4.15:8089/Spr_SperSec_DB</param-value>
<!-- <param-value>http://localhost:38080/HRAlign_V3Talent</param- value> -->
</init-param>
</filter>
<filter-mapping>
<filter-name>AuthFilter</filter-name>
<servlet-name>sdnext</servlet-name>
</filter-mapping>
sdnext-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<annotation-driven></annotation-driven>
<context:property-placeholder location="classpath:resources/database.properties" />
<context:component-scan base-package="com.box.practice"/>
<tx:annotation-driven transaction-manager="hibernateTransactionManager"/>
<beans:bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<beans:bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="${database.driver}" />
<beans:property name="url" value="${database.url}" />
<beans:property name="username" value="${database.user}" />
<beans:property name="password" value="${database.password}" />
</beans:bean>
<beans:bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="annotatedClasses">
<beans:list>
<beans:value>com.box.practice.security.login.model.Users</beans:value>
<beans:value>com.box.practice.personalDetails.personalInfo.model.Concept_Underst anding_CURD</beans:value>
</beans:list>
</beans:property>
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="hibernate.dialect">${hibernate.dialect} </beans:prop>
<beans:prop key="hibernate.show_sql">${hibernate.show_sql} </beans:prop>
<beans:prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
<beans:bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<beans:property name="sessionFactory" ref="sessionFactory" />
</beans:bean>
</beans:beans>
sdnext-security.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:beans="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<security:http auto-config="true" >
<security:intercept-url pattern="/**" />
<security:form-login login-page="/login" default-target-url="/security/login/index.html"
authentication-failure-url="/security/login/fail2login" />
<security:logout logout-success-url="/security/login/logout" />
</security:http>
<beans:bean id="passwordEncoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder"/>
<beans:bean class="com.box.practice.common.web.UserAuthenticationProvider"
id="userAuthenticationProvider" autowire-candidate="true">
</beans:bean>
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="userAuthenticationProvider"/>
<security:authentication-provider>
<security:user-service>
<security:user name="abc" password="xyz" authorities="ROLE_USER" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
</beans:beans>
UserAuthenticationProvider.class
public class UserAuthenticationProvider implements Authentication{
private static final long serialVersionUID = 1L;
@Autowired HttpSession session;
@Autowired PasswordEncoder passwordEncoder;
@Autowired UserCredentialsService userCredentialsService;
public Authentication authenticate(Authentication authentication) throws AuthenticationException{
UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authentication;
String userName = token.getName();String key="";
String jCryption=(String)token.getCredentials();
key = (String) session.getAttribute("jCryptionKey");
if(key==null || key.equals(""))
{
throw new PreAuthenticatedCredentialsNotFoundException("");
}
String passwordStr = AesCtr.decrypt(jCryption, key, 256); // added jar javacryption-1.0.jar
String password = passwordEncoder.encode(passwordStr);
User user=null;
user = userCredentialsService.authenticateUser(userName, password);
if(user == null) {
throw new UsernameNotFoundException("Invalid username/password");
}else{
if(!passwordEncoder.matches(passwordStr, user.getPassword())){
throw new BadCredentialsException("Invalid username/password");
}
}
session.setAttribute("user", user);
return new UsernamePasswordAuthenticationToken(user,password);
}
Web.xml
sdnext
org.springframework.web.servlet.DispatcherServlet
1.
sdnext
*.html
org.springframework.web.context.ContextLoaderListener
上下文配置位置
/WEB-INF/config/sdnext-servlet.xml,
/WEB-INF/sdnext-security.xml
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
AuthFilter
com.box.practice.common.web.AuthFilter
主办
http://172.17.4.15:8089/Spr_SperSec_DB
AuthFilter
sdnext
sdnext-servlet.xml
com.box.practice.security.login.model.Users
com.box.practice.personalDetails.personalInfo.model.Concept\u Underst\u CURD
${hibernate.dial}
${hibernate.show_sql}
${hibernate.hbm2ddl.auto}
sdnext-security.xml
UserAuthenticationProvider.class
公共类UserAuthenticationProvider实现身份验证{
私有静态最终长serialVersionUID=1L;
@自动连线HttpSession;
@自动连线密码编码器;
@自动连线用户认证服务用户认证服务;
公共身份验证(身份验证)引发AuthenticationException{
UsernamePasswordAuthenticationToken=(UsernamePasswordAuthenticationToken)身份验证;
String userName=token.getName();String key=“”;
字符串jCryption=(字符串)token.getCredentials();
key=(String)session.getAttribute(“jCryptionKey”);
if(key==null | | key.equals(“”)
{
抛出新的PreAuthenticatedCredentialsNotFoundException(“”);
}
字符串passwordStr=AesCtr.decrypt(jCryption,key,256);//添加了jar javacryption-1.0.jar
字符串password=passwordEncoder.encode(passwordStr);
User=null;
user=userCredentialsService.authenticateUser(用户名、密码);
if(user==null){
抛出新用户名NotFoundException(“无效用户名/密码”);
}否则{
如果(!passwordEncoder.matches(passwordStr,user.getPassword())){
抛出新的BadCredentialsException(“无效用户名/密码”);
}
}
session.setAttribute(“用户”,user);
返回新的用户名PasswordAuthenticationToken(用户,密码);
}
你能检查一下你在web.xml
文件中的评论吗。我看不出它是否结束了。web.xml文件中的所有评论都正确结束了。有人能帮我吗。。。。。!!!!!!!!!!!!!!!!!!