Как я могу получить имя пользователя при неудачном входе в систему с помощью Spring Security?

Мы Вы используете Spring Security 3.0.5, Java 1.6 и Tomcat 6.0.32. В нашем файле конфигурации .xml у нас есть:

<form-login login-page="/index.html" default-target-url="/postSignin.html" always-use-default-target="true"
 authentication-failure-handler-ref="authenticationFailureHandler"/>

и наш authenticationFailureHandler , определенный как:

<beans:bean id="authenticationFailureHandler" class="org.springframework.security.web.authentication.ExceptionMappingAuthenticationFailureHandler">
   <beans:property name="exceptionMappings">
      <beans:props>
    <beans:prop key="org.springframework.security.authentication.BadCredentialsException">/index.html?authenticationFailure=true</beans:prop>
    </beans:props>
   </beans:property>
</beans:bean>

Java

    @RequestMapping(params={"authenticationFailure=true"}, value ="/index.html")
    public String handleInvalidLogin(HttpServletRequest request) {
       //...  How can I get the username that was used???
       // I've tried:
       Object username = request.getAttribute("SPRING_SECURITY_LAST_USERNAME_KEY");
       Object username = request.getAttribute("SPRING_SECURITY_LAST_USERNAME");  // deprecated
    }

Таким образом, мы направляем все BadCredentialsExceptions в ] index.html и IndexController . В IndexController я хотел бы получить имя пользователя , которое использовалось для неудачной попытки входа в систему. Как я могу это сделать?

22
задан Joe 30 December 2011 в 06:08
поделиться