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.