通常认证提供商认证经理标签与指向的bean创建一个用户服务裁判属性相关联的实现UserDetailsService,但在我的应用程序中,它的ref属性已被用来指向实现AuthenticationProvider的bean。该bean编码用户提供的密码,并将其与数据库中的编码密码进行比较。 我有弹簧security.xml文件以下配置现在Spring3安全 - SwitchUserFilter - 可我们的UserDetailsService的实现提供加密的密码
<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要求我提供一个密码,它可以匹配用户提供的密码,但我没有将原始密码存储在数据库中。没有选项可以提供一个实现接口的bean(比如我在上面提到的认证提供者属性中)或者一个选项,告诉spring需要对提供的密码进行编码,然后再将它与I进行比较从数据库提供。有什么建议么 ?