Estamos usando spring security 3.0.5, Java 1.6 y Tomcat 6.0.32. En nuestro archivo de configuración .xml tenemos:¿Cómo puedo obtener el nombre de usuario de un inicio de sesión fallido utilizando la seguridad de primavera?
<form-login login-page="/index.html" default-target-url="/postSignin.html" always-use-default-target="true"
authentication-failure-handler-ref="authenticationFailureHandler"/>
y nuestra authenticationFailureHandler
define como:
<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
}
Así que estamos dirigiendo toda BadCredentialsExceptions
a la index.html
y IndexController
. En el IndexController
me gustaría obtener el username
que se utilizó para el intento fallido de inicio de sesión. ¿Cómo puedo hacer esto?
Lo intenté pero no funciona –
Tenemos este código exacto trabajando en nuestra configuración. No puedo decirte por qué no funcionaría en el tuyo. No tuvimos que configurar nada nuevo ni cambiar ningún archivo .xml en ninguna parte. Las anotaciones parecen apuntar a este código y ejecutarlo cuando hay un inicio de sesión incorrecto. Funciona perfectamente para nosotros. – kasdega
tal vez requiera alguna otra configuración. Por cierto, he encontrado una solución alternativa. Gracias por la información, aunque :) –