Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/11/2013, 12:55
oskrok
 
Fecha de Ingreso: febrero-2006
Mensajes: 43
Antigüedad: 18 años, 9 meses
Puntos: 1
Mostrar username despues de un login fallido

Pues bien estoy usando Spring security en mi proyecto y el login me funciona bien, el problema lo tengo cuando tengo un login fallido. Quiero obtener el nombre de usuario para mostrar y en caso de que exista añadirle un login fallido para llegar a un número determinado bloquear la cuenta y que resetee la contraseña.

Mi spring-security.xml
Código PHP:
    <http auto-config="true">
        <
intercept-url pattern="/welcome*" access="ROLE_USER" />
        
        <
form-login login-page="/login" 
            
authentication-failure-url="/login-failed" />
        <
logout logout-success-url="/" />
    </
http
Mi login.jsp:
Código PHP:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ 
page language="java" contentType="text/html;  charset=UTF-8" pageEncoding="UTF-8"%>
<
html lang="es">
<
head>
<
title>Login Page</title>
<
style>
.
errorblock {
    
color#ff0000;
    
background-color#ffEEEE;
    
border3px solid #ff0000;
    
padding8px;
    
margin16px;
}
</
style>
</
head>
<
body onload='document.f.j_username.focus();'>
    <
h3>Login with Username and Password (Custom Page)</h3>
 
    <
c:if test="${not empty error}">
        <
div class="errorblock">
            
Your login attempt was not successful, try again.<br /> Caused :
            ${
sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
        </
div>
    </
c:if>
 
    <
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>
</
body>
</
html
Y mi controlador:

Código PHP:

 
@RequestMapping(value="/welcome"method RequestMethod.GET)
 public 
String printWelcome(ModelMap modelPrincipal principal ) {

     
model.addAttribute("username"principal.getName());  
     
model.addAttribute("message""Spring Security Custom Form example");
     return 
"hello";
 }
 @
RequestMapping(value="/login-failed"method RequestMethod.GET)
 public 
String loginerror(ModelMap modelPrincipal principal) {

   
User user;
   
user uDao.getByEmail(principal.getName());
   
model.addAttribute("message"message);
   
model.addAttribute("view"view);
   return 
"main-layout";
 } 
El problema es que como aquí no hay un login válido es principal.getName() es nulo, ¿Como puedo obtener el nombre de usuario que han introducido para mostrar el error y sumarle un intento en caso de que exista?

Muchas gracias. Un saludo!