viernes, 23 de octubre de 2015

Configurar la pagina de login. En Spring security

Uno de los primeros pasos que tenemos que hacer una vez tenemos configurado spring security. Es crear nuestra propia pagina de login.

Creamos la pagina de login:

Lo primero que tenemos que hacer es crear la JSP, que vamos a utilizar como pagina de login.
<c:url value="/" var="contexto" />
<c:url value="/login" var="loginUrl"/>
<head>
 <link href="${contexto}resources/bootstrap/css/bootstrap.min.css" rel="stylesheet">
 <link href="${contexto}resources/bootstrap/css/bootstrap-theme.min.css" rel="stylesheet">
 <link href="${contexto}resources/css/login.css" rel="stylesheet">
</head>
<body>

    <div class="container">
<form action="${loginUrl}" method="post" class="form-signin">   
 <h2 class="form-signin-heading">Login</h2>    

  <label for="username">Usuario</label>
  <input type="text" id="username" name="username" class="form-control"/> 

  <label for="password">Contraseña</label>
  <input type="password" id="password" name="password" class="form-control"/> 

 <input type="hidden"                        
  name="${_csrf.parameterName}"
  value="${_csrf.token}"/>
 <button type="submit" class="btn btn-lg btn-primary btn-block">Conectarse</button>
</div>
</form>

Creamos el mapeo a la pagina de login

Lo siguiente que tenemos que hacer es crear un mapeo a la pagina de login, como en este caso no es necesario crear un controlador, vamos a establecerlo en la configuración de los controladores, como una vista.

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    super.addViewControllers(registry);
    registry.addViewController("/login").setViewName("login");
    registry.setOrder(Ordered.HIGHEST_PRECEDENCE);  
}

Le indicamos a Spring security donde buscar la nueva pagina.

En el post anterior, teníamos puesta la configuración por defecto que es la siguiente:
http
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .formLogin().and()
    .httpBasic();
Ahora lo que vamos hacer es sobrecribir el método de configure y indicar a spring security donde encontrar, la pagina web, en nuestro caso vamos a extender la configuración del formLogin:
  • Indicar donde se encuentra la pagina de login (loginPage)
  • Le damos todos los permisos asociados a loginPage.
@Override
protected void configure(HttpSecurity http) throws Exception {
    super.configure(http);
    http.authorizeRequests()    // Le indicamos que la autorizacion va a ser a nivel de request.
        .anyRequest().authenticated()  // Le indicamos que cada solicitud requiere que el usuario de autentique.
        .and()
    .formLogin()    // Configurar el formato de login.
        .loginPage("/login") // aqui le indicamos donde se encuentra la pagina de login.
        .permitAll();// Aqui le indicamos que la pagina de login es publica.*/
}

Maquetar la pagina login.

Ya que tenemos una pagina de login, la vamos a maquetar con nuestra css para que tengamos una pagina de login acorde con la maquetación de nuestra aplicación. Para este ejemplo he utilizado la siguiente pagina http://getbootstrap.com/examples/signin/ que podéis encontrar en bootstrap.

Permitir que las css de la maquetación, se pueda visualizar.

Para lo siguiente vamos a quitar de la seguridad, la ruta de los /resources/**, para que nuestra pagina de login tenga acceso a ellos:

@Override
 public void configure(WebSecurity web) throws Exception {
     web
      .ignoring()
      .antMatchers("/resources/**");
  super.configure(web);
 }

Con este cambio ya podemos visualizar el login, con su maquetación.

No hay comentarios:

Publicar un comentario