Usando SPRING_SECURITY_LAST_USERNAME en una plantilla thymeleaf

votos
2

Tengo un formulario de acceso dictada por thymeleaf y alimentado por la primavera de Seguridad. Si se produce un error de autenticación, me gustaría que el campo nombre de usuario para ser pre-pobladas con el valor introducido por el usuario en su intento previo. Spring Security proporciona SPRING_SECURITY_LAST_USERNAME para ese propósito, pero mis búsquedas de la documentación en línea y no se presenta cómo exponer que a través de thymeleaf. A continuación se presentan las versiones simplificadas de los archivos relevantes:

Mi archivo XML de seguridad:

<beans xmlns=http://www.springframework.org/schema/beans
    xmlns:sec=http://www.springframework.org/schema/security
    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-3.0.xsd
        http://www.springframework.org/schema/security
        http://www.springframework.org/schema/security/spring-security-3.1.xsd>
    <sec:http auto-config=true>
        <sec:intercept-url pattern=/login/** access=IS_AUTHENTICATED_ANONYMOUSLY/>
        <sec:form-login login-page=/login authentication-failure-url=/login/fail default-target-url=//>
        <sec:logout />
    </sec:http>
    <sec:global-method-security secured-annotations=enabled/>
</beans>

login.html:

<!DOCTYPE html>
<html lang=en xmlns=http://www.w3.org/1999/xhtml xmlns:th=http://www.thymeleaf.org>
    <head th:include=template::head></head>
    <body class=login>
        <nav th:include=template::nav></nav>
        <div>
            <h2>Log in</h2>
            <div>
                <div th:if=${loginFail} class=error>
                    Username/password incorrect.
                </div>
                <form id=login th:action=@{/j_spring_security_check} method=POST>
                    <dl>
                        <dt>Username</dt>
                        <dd><input type=text id=j_username name=j_username />@mshare.net</dd>
                        <dt>Password</dt>
                        <dd><input type=password id=j_password name=j_password /></dd>
                    </dl>
                    <input type=submit value=Log in />
                </form>
            </div>
        </div>
    </body>
</html>

Controlador de tratamiento de errores:

@RequestMapping(value = /login/fail)
public String loginError(Model model) {
    model.addAttribute(loginFail, Boolean.TRUE);
    return login;
}
Publicado el 15/07/2013 a las 19:59
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more