【发布时间】:2012-02-23 09:15:19
【问题描述】:
通常 authentication-manager 标签的 authentication-provider 与指向 bean 的 user-service-ref 属性相关联实现了 UserDetailsService,但在我的应用程序中,它的 ref 属性已用于指向实现 AuthenticationProvider 的 bean。此 bean 对用户提供的密码进行编码,并将其与数据库中的编码密码进行比较。 我在 spring-security.xml 中有以下配置
<beans:bean id="myAuthenticationProvider" class="com.mysecurity.server.security.MyAuthenticationProvider" />
<authentication-manager alias="authenticationManager">
<authentication-provider ref="eeAuthenticationProvider" />
</authentication-manager>
现在,如果我使用 SwitchUserFilter,它需要对实现 UserDetailsService 的类的引用,如下所示:
<beans:bean id="switchUserProcessingFilter" class="org.springframework.security.web.authentication.switchuser.SwitchUserFilter">
<beans:property name="userDetailsService" ref="userServices" />
<beans:property name="switchUserUrl" value="/admin/switchUser" />
<beans:property name="exitUserUrl" value="/exitUser" />
<beans:property name="targetUrl" value="/" />
</beans:bean>
问题是 UserDetailsService 要求我提供一个与用户提供的密码匹配的密码,但我没有将原始密码存储在数据库中。没有提供实现 AuthenticationProvider 接口的 bean 的选项(就像我上面提到的 authentication-provider 属性)或告诉 spring 它需要编码的选项在将其与我从数据库提供的密码进行比较之前提供的密码。有什么建议吗?
【问题讨论】:
标签: authentication spring-security