Я использовал службу аутентификации 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 ?
Заранее спасибо. (При необходимости могу предоставить больше информации)