我正在使用JDBC身份验证服务来保护我的安全。 身份验证提供程序的代码是,
<authentication-provider>
<jdbc-user-service id="userDetailsService" data-source-ref="dataSource" />
</authentication-provider>
对于数据源,
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/demodata" />
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
我也在使用 daoAuthenticationProvider ,代码就是,
<beans:bean id="daoAuthenticationProvider" class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
<property name="userDetailsService" ref="userDetailsService"/>
<property name="saltSource" ref bean="saltSource"/>
<property name="passwordEncoder" ref="passwordEncoder"/>
</beans:bean>
它运作正常。 现在我想使用 JPA 连接而不是 JDBC 。 所以我创建了新的 CustomUserDetailsService 类实现UserDetailsService 接口。现在我的身份验证提供程序看起来像,
<authentication-provider user-service-ref="CustomUserDetailsService">
</authentication-provider>
<beans:bean id="CustomUserDetailsService" class="com.service.CustomUserDetailsService" />
身份验证管理器的代码:
<beans:bean id="authenticationManager"
class="org.springframework.security.providers.ProviderManager">
<beans:property name="providers"><beans:list>
<beans:ref local="daoAuthenticationProvider" />
</beans:list> </beans:property>
<beans:property name="sessionController"
ref="defaultConcurrentSessionController" />
</beans:bean>
问题在于,现在如何在 daoAuthenticationProvider的属性userDetailsService 中提供引用? 先感谢您。 (如果需要,我可以提供更多信息)
答案 0 :(得分:4)
???只需通过id:
引用新的UserDetailsService<beans:bean id="daoAuthenticationProvider"
class="org.springframework.security.providers.dao.DaoAuthenticationProvider">
<property name="userDetailsService" ref="CustomUserDetailsService"/>
<property name="saltSource" ref bean="saltSource"/>
<property name="passwordEncoder" ref="passwordEncoder"/>
</beans:bean>
或者我错过了什么?
答案 1 :(得分:2)
而不是
<authentication-provider user-service-ref="CustomUserDetailsService">
</authentication-provider>
<beans:bean id="CustomUserDetailsService"
class="com.service.CustomUserDetailsService" />
您可以按照建议here尝试以下内容吗?
<beans:bean id="CustomUserDetailsService" class="com.service.CustomUserDetailsService">
<custom-authentication-provider/>
</beans>