Интеграция Spring & JDBC на страницу входа в JSF2 - PullRequest
1 голос
/ 21 августа 2011

Я использовал правильно запущенный пример проекта ( документация ) для создания простой страницы входа в JSF, работающей с Spring Security на Tomcat 7 с использованием Eclipse. В приведенном выше примере имена пользователей, пароли и роли хранятся в файле applicationContext-security.xml в следующем формате:

<authentication-provider>
  <password-encoder hash="md5" />
  <user-service>
    <user   name="rod"
            password="a564de63c2d0da68cf47586ee05984d7"
            authorities="ROLE_SUPERVISOR, ROLE_USER, ROLE_TELLER" />
    <user   name="peter"
            password="22b5c9accc6e1ba628cedc63a72d57f8"
            authorities="ROLE_USER" />
  </user-service>
</authentication-provider>

Я пытаюсь изменить его, чтобы я мог использовать базу данных аутентификации через JDBC. После простой модификации я больше не могу получить доступ к своему проекту на сервере (404) из-за ошибки (Eclipse не предоставляет подробностей, или, возможно, я не знаю, где искать). Не могли бы вы дать мне несколько советов о том, что может пойти не так? Спасибо.

Ниже приведена полная копия моего обновленного applicationContext-security.xml:

</p> <pre><code> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.1.xsd"> <global-method-security secured-annotations="enabled"> </global-method-security> <http auto-config="true" access-denied-page="/accessDenied.jsp"> <intercept-url pattern="/faces/protected**" access="ROLE_SUPERVISOR,ROLE_USER,ROLE_TELLER" /> <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" /> <form-login login-processing-url="/j_spring_security_check" login-page="/faces/login.jsf" default-target-url="/" authentication-failure-url="/faces/login.jsf" /> <logout logout-url="/logout*" logout-success-url="/" /> </http> <authentication-provider> <jdbc-user-service data-source-ref="dataSource"/> </authentication-provider> <beans:bean id="userDetailsService" class="org.springframework.security.userdetails.jdbc.JdbcDaoImpl"> <beans:property name="dataSource" ref="dataSource"/> </beans:bean> <beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/> <beans:property name="url" value="jdbc:mysql:///mysampledb"/> <beans:property name="username" value="root"/> <beans:property name="password" value="root"/> </beans:bean> </beans:beans>

1 Ответ

1 голос
/ 22 августа 2011

Проблема решена! Я должен был удалить это:

<beans:bean id="userDetailsService" class="org.springframework.security.userdetails.jdbc.JdbcDaoImpl">
  <beans:property name="dataSource" ref="dataSource"/>
</beans:bean>

Так как было создано более одного экземпляра userDetailsService, что вызвало ошибку.

...