在Spring 2中,我创建了一个自定义身份验证提供程序,因为我无法像Spring一样喜欢从数据库中获取密码,因为路上有一个黑盒子。当我尝试进行身份验证时,我得到:
找不到org.springframework.security.providers.UsernamePasswordAuthenticationToken
的AuthenticationProvider
我把这个bean放在我的security.xml中:
<bean id="imsAuthProvider" class="com.terrapages.mokbeecds.ims.IMSAuthenticationProvider">
<security:custom-authentication-provider />
</bean>
我认为,这就是我所需要的一切。它应该从表单中获取用户名和密码,并将其传递给我的提供商,以便在其认为合适时进行处理。 我的customAuthenticationProvider中也有这个:
public boolean supports(@SuppressWarnings("rawtypes") Class authentication) {
return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
}
根据我的理解,在将身份验证令牌提供给自定义身份验证提供程序之前,会对其进行检查。如果返回false,则Spring检查下一个身份验证提供程序。
主authenticate(Authentication)
方法只能抛出BadCredentialsException
或AuthenticationServiceException
,据我所知,这不应该导致上面的输出。
关于Spring 2的信息有点难以找到,目前Spring 3无处不在。
如何让我的提供商接受UsernamePasswordAuthenticationToken
?
答案 0 :(得分:0)
Spring Security 2也很好地记录了:http://static.springsource.org/spring-security/site/docs/2.0.x/reference/html/springsecurity.html 请使用以下支持方式:
public boolean supports(Class authentication) {
return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
}
<强>被修改强>
建议: