Весна безопасности с использованием JPA. Как настроить файл applicationContext-security.XML? (Используя DaoAuthenticationProvider) - PullRequest
4 голосов
/ 08 февраля 2011

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

Ответы [ 2 ]

4 голосов
/ 08 февраля 2011

???Просто укажите новый UserDetailsService по id:

<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>

Или я что-то упустил?

2 голосов
/ 09 февраля 2011

вместо

<authentication-provider  user-service-ref="CustomUserDetailsService">
</authentication-provider>
<beans:bean id="CustomUserDetailsService" 
    class="com.service.CustomUserDetailsService" />

Можете ли вы попробовать следующее, как предложено здесь ?

<beans:bean id="CustomUserDetailsService" class="com.service.CustomUserDetailsService">
    <custom-authentication-provider/>
</beans>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...