Foros del Web » Programación para mayores de 30 ;) » Java »

No funciona bien la aplicación con Spring-Security

Estas en el tema de No funciona bien la aplicación con Spring-Security en el foro de Java en Foros del Web. Hola, estoy empezando con el framework spring y para ello me estoy desarrollando un pequeña aplicación que me sirva para poder empezar con este framework. ...
  #1 (permalink)  
Antiguo 23/05/2013, 08:19
 
Fecha de Ingreso: febrero-2010
Mensajes: 37
Antigüedad: 14 años, 2 meses
Puntos: 0
No funciona bien la aplicación con Spring-Security

Hola,

estoy empezando con el framework spring y para ello me estoy desarrollando un pequeña aplicación que me sirva para poder empezar con este framework.

Acabo de introducir spring-security a mi aplicación para poder dar acceso a usuarios, validar usuario y contraseñas,... y la cosa que anteriormente a esto la aplicación (que la estoy desarrollando con Spring MVC) si que iba. Cuando introducía los credenciales (usuario y contraseña), la aplicación iba al controlador de esa página, al método "POST", ahí validaba los usuario tras hacer una comprobación por medio de la clase Validator, esta clase me si el usuario no se encontraba en la bbdd o los credenciales no estaban introducidos correctamente lanzaba un error.

La cosa es que ahora he querido introducir Spring-Security para obtener más seguridad en mi aplicación, pero cuando introduzco los datos de usario y contraseña, nunca me redirige al método "post" como si que lo hacía antes, sino que se me queda todo el rato en el método "get" y la verdad que por más vuelta que doy y por más tutoriales que miro no encuentro el porqué.

A continuación dejo el código fuente que estoy utilizando.

El archivo jsp del formulario, se llama index.jsp
Código:
...
<form:form name="f" commandName="usuario" action="j_spring_security_check" method="POST" >
	<table align="center">
		<tr>
	       		<td><form:errors path="errorUsuario" cssClass="error"/></td>
	        </tr>
	</table>
	<table border="0" cellpadding="2" cellspacing="3">
	<tbody>
	         <tr>
	                <td><span id="letra">Usuario</span></td>
	                <td><form:input path="nombreUsuario" name='j_username' id="fondo-gris"/></td>
		         <td><form:errors path="nombreUsuario" cssClass="error"/></td>
		</tr>
		<tr>
		          <td><span id="letra">Password</span></td>
		          <td><form:password path="clave" name='j_password' id="fondo-gris"/></td>
			   <td><form:errors path="clave" cssClass="error"/></td>
		</tr>
		<tr>   
		           <td colspan="3"><center><input id="botonInciar" type="submit" name="guardar" value="Iniciar Sesión"/></center></td>
		</tr>
	</tbody>
	</table>
</form:form>
...
El controlador de esa página.
Código:
...
@RequestMapping(value = "/index", method = RequestMethod.GET)
    public String login(Model modelo) throws Exception {

		logger.info("LogginController --> login: ha entrado en el método GET");
		
		Usuario usuario = new Usuario();
		
		modelo.addAttribute("usuario", usuario);
		
		logger.info("LogginController --> login: los resultados del usuario son, userName: " + usuario.getNombreUsuario());

        return "index";
    }
	
	/**
	 * Recoge los parámetros y redireccionamos donde necesitamos
	 * @param usuario El usuario que intenta acceder al sistema
	 * @param result Resultado del acceso
	 * @param status Estado de lasesión
	 * @return Retornamos la redirección a la página donde debe de ir tras la validación
	 */
   @RequestMapping(value = "/index", method = RequestMethod.POST)
   public String processSubmitLogin(@ModelAttribute("usuario") Usuario usuario, BindingResult result, SessionStatus status) {

	logger.info("LogginController --> processSubmitLogin: ha entrado en el método POST");
		
	UsuarioLoggin ul = new UsuarioLoggin(usuario, usuarioService);
	new LogginValidator().validate(ul, result);
		
        if (result.hasErrors()) {
            return "index";
        } else {
            status.setComplete();
            return "redirect:/ok.htm";
        }
    }
...
El archivo de configuración de spring-security: securityApplicationContext.xml
Código:
...
<security:http auto-config="true" use-expressions="true">
		<security:intercept-url pattern="/index" access="permitAll"/>
		<security:intercept-url pattern="/*" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>
		<security:form-login login-page="/index"/>
	</security:http>
	
	<security:authentication-manager alias="authenticationManager">
		<security:authentication-provider>
			<security:jdbc-user-service data-source-ref="dataSource"/>
		</security:authentication-provider>
	</security:authentication-manager>
...
PD: Probando probando vi que si quitaba la etiqueta del archivo jsp "j_spring_security_check", me funciona la aplicación como lo estaba haciendo hasta ahora, pero en cambio si la dejo cuando se pulsa el botón de enviar los datos, la aplicación se queda todo el rato en el método "GET" del controlador.

Muchas gracias

Etiquetas: spring
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:21.