2013-06-09 3 views
0

Итак, я пытаюсь создать проверку подлинности с использованием спящего режима. Я проверил, вероятно, все учебники по этой проблеме, которые доступны в Интернете, и все же я, кажется, что-то не хватает, потому что, когда я нажимаю кнопку отправки в своей форме, аутентификация не выполняется, и я не перенаправляюсь где я должен был быть перенаправлен ...Весенняя аутентификация не будет работать

Это моя конфигурация безопасности:

<bean id='userDetailsService' class='fi.social.web.services.UserDetailsServiceImpl'></bean> 

<security:http auto-config="true"> 
    <security:form-login login-page="/" default-target-url="/welcome" 
     authentication-failure-url="/loginfailed" /> 
</security:http> 

<bean id='daoAuthenticationProvider' class='org.springframework.security.authentication.dao.DaoAuthenticationProvider'> 
    <property name='userDetailsService' ref='userDetailsService' /> 
</bean> 

<bean id='authenticationManager' class='org.springframework.security.authentication.ProviderManager'> 
    <property name='providers'> 
     <list> 
      <ref local='daoAuthenticationProvider' /> 
     </list> 
    </property> 
</bean> 

<security:authentication-manager> 
    <security:authentication-provider user-service-ref='userDetailsService'> 
     <security:password-encoder hash='plaintext' /> 
    </security:authentication-provider> 
</security:authentication-manager> 

и моя страница JSP:

<form method="post" name="loginForm" action="<c:url value='j_spring_security_check' />"> 
    <table style="position:absolute; right:15px;"> 
     <tr> 
      <td><input type="text" name="j_username" placeholder="<fmt:message key="user.usernameOrEmail"/>"/></td> 
      <td><input type="password" name="j_password" placeholder="<fmt:message key="user.password"/>"/></td> 
     </tr> 
     <tr> 
      <td colspan="2" style="color: white; text-align:right"> 
       <input type="checkbox" name="remember" /><fmt:message key="user.remember" /> 
       <input type="submit" name="submit" style="margin:0px 0px 0px 15px; display:inline;" value="<fmt:message key="user.logIn"/>" /> 
      </td> 
     </tr> 
    </table> 
</form> 

Тем не менее, по какой-то причине, когда я отправить форму Я иду на

http://127.0.0.1:8080/social/j_spring_security_check;jsessionid=C00D6F0CA27E3B359A9B04B8FADDD87F 

, хотя весна должна знать, что моя форма есть и что она должна обрабатывать параметры ... Так что я делаю неправильно?

+0

Из кода видно, что вы внедряете Spring Social, которая является реализацией, которая будет проходить проверку подлинности на facebook/twitter/... если я правильно помню. Это то, что вы пытаетесь реализовать? http://www.springsource.org/spring-social Вы упомянули Hibernate, я предполагаю, что вы хотите реализовать локальную аутентификацию? –

+0

о! нет, имя «социальное» - просто совпадение. Я не понимал, что для интеграции с другими сервисами была какая-то весенняя социальная среда: P Я хочу создать простую аутентификацию на основе собственной базы данных. –

+0

Что происходит, когда вы помещаете это на свою страницу? Что он выводит? –

ответ

0

Вы пытались настроить форму входа только с помощью <form method="post" name="loginForm" action='#{request.contextPath}/j_spring_security_check'>

Также есть одна странная вещь на вашей конфигурации (но от того, что вы говорите, что это не проблема сейчас):

Это что вы объявляете два authentication managers:

<security:authentication-manager>,
<bean id='authenticationManager' class='org.springframework.security.authentication.ProviderManager'>

Попробуйте удалить

<security:authentication-manager> 
    <security:authentication-provider user-service-ref='userDetailsService'> 
     <security:password-encoder hash='plaintext' /> 
    </security:authentication-provider> 
</security:authentication-manager>