2013-03-08 4 views
1

У меня есть приложение mvc весны. И я добавил Spring Security с помощью CustomAuthenticationManager. Это application-security.xml, который включен в appContex.xml. В login.jsp я использую стандартную страницу входа с двумя входами: name = 'j_username' & name = 'j_password', а не в методе в CustomAuthenticationManager.authenticate (Аутентификация подлинности), я получаю только пароль, но не директор с именем. Что я делаю неправильно?Весна безопасности. Custom AuthenticationManager

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:security="http://www.springframework.org/schema/security" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd 
         http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 


<bean id="loginPassAuthenticationFilter" 
    class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter"> 
    <property name="authenticationManager" ref="customAuthenticationManager" /> 
    <property name="allowSessionCreation" value="true" /> 
    <property name="filterProcessesUrl" value="/j_spring_security_check" /> 
    <property name="authenticationFailureHandler" ref="customAuthenticationFailureHandler" /> 
    <property name="authenticationSuccessHandler" ref="customAuthenticationSuccessHandler" /> 
</bean> 

<bean id="customAuthenticationManager" 
    class="com.whatever.security.CustomAuthenticationManager" /> 
<bean id="authenticationFilter" 
    class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter" 
    p:authenticationManager-ref="customAuthenticationManager" 
    p:authenticationFailureHandler-ref="customAuthenticationFailureHandler" 
    p:authenticationSuccessHandler-ref="customAuthenticationSuccessHandler" /> 

<bean id="customAuthenticationFailureHandler" 
    class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler" 
    p:defaultFailureUrl="/?error=true" /> 

<bean id="customAuthenticationSuccessHandler" 
    class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler" 
    p:defaultTargetUrl="/" /> 

<bean id="authenticationEntryPoint" 
    class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint" 
    p:loginFormUrl="/" /> 
<security:authentication-manager /> 
<bean id="passwordEncoder" 
    class="org.springframework.security.authentication.encoding.ShaPasswordEncoder"> 
    <constructor-arg value="512" /> 
</bean> 

<form name='f' action="<c:url value='j_spring_security_check' />" 
    method='POST'> 
    <table> 
     <tr> 
      <td>User:</td> 
      <td><input type='text' name='j_username' value=''></td> 
     </tr> 
     <tr> 
      <td>Password:</td> 
      <td><input type='password' name='j_password' /></td> 
     </tr> 
     <tr> 
      <td colspan='2'><input name="submit" type="submit" 
       value="submit" /></td> 
     </tr> 
     <tr> 
      <td colspan='2'><input name="reset" type="reset" /></td> 
     </tr> 
    </table> 
</form> 
+0

Ваш 'j_username' вход определяет свое собственное' значение = ' '. Это может привести к предупреждению ввода значений, введенных пользователем. – Gus

+0

nope, что не помогает –

+0

Хм, я разместил регистратор в менеджере автоэлектроники, и когда я развертываю приложение с помощью eclipse, он показывает мне в отладке, что любой логин был найден, но если он был развернут с помощью консоли на реальном сервере - logger, покажи мне логин .. , –

ответ

4

Я рекомендую использовать безопасность пространство имен (ссылку на пример минимальной конфигурации):
http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-minimal

Вот ссылка, как вы можете определить свой собственный провайдер аутентификации: http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-auth-manager

Создание вашего продукта n поставщик аутентификации решает большинство случаев использования. Скажите, пожалуйста, если вам нужны дополнительные разъяснения.

С наилучшими пожеланиями,

Майкл

Смежные вопросы