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.