Bienvenido a re-orientation! Esperamos que encuentres lo que buscas

Creando las páginas JSP de acceso a la aplicación web


Parte del manual paso a paso para desarrollar una aplicación web con Spring Framework + Spring Security contra una base de datos MySQL.

Llegados a este punto, toca crear las JSPs de acceso y las HOMEs para los usuarios administradores y empleados.

  • JSP de acceso a la aplicación (WEB-INF/jsp/index.jsp)
  • JSP de inicio para administradores registrados en la aplicación (WEB-INF/jsp/foradmins/index.jsp)
  • JSP de inicio para empleados registrados en la aplicación (WEB-INF/jsp/forotherusers/index.jsp)

Para crear la JSP de acceso a la aplicación seguiremos las recomendaciones de Spring Security y la crearemos tal cual aparece reflejada en la documentación. Al utilizar el formulario predefinido, los nombre de los parámetro y el action deben respetarse ya que son los que el framework espera recibir. En caso de fallo en el proceso de autenticación, el usuario será devuelto a esta misma página.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<title>Insert title here</title>
</head>
<body>
	<h3>login page</h3>
	<%	if ( session.getAttribute("SPRING_SECURITY_LAST_EXCEPTION")!= null) { %>
		<label class="error">Error en proceso login</label>
	<%	} 
		session.removeAttribute("SPRING_SECURITY_LAST_EXCEPTION"); 
	%>
	<form class="navbar-form navbar-right" name="f" method="post" action="<%=request.getContextPath() %>/j_spring_security_check">
    	<div class="form-group">
            <input type="text" class="form-control"  id="j_username" name="j_username" />
        </div>
        <div class="form-group">
        	<input type="password"  class="form-control"  name="j_password">
        </div>
        <button type="submit" class="btn btn-success">Entra!</button>
    </form>
</body>
</html>

Una vez ejecutemos la aplicación desde nuestro servidor, la página de inicio quedaría así:

Página de inicio

Vamos a crear ahora las páginas de inicio para los usuarios autenticados: administradores y empleados. Ambas serán de momento similares (cambiaremos los textos para identificarlas), y estarán en rutas diferentes. El aspecto que tendrán es el siguiente:

Página de inicio para administradores

A estas páginas solo se puede llegar si se pasa por el proceso de autenticación de Spring Security de manera correcta. Si se intenta acceder directamente a estas páginas, el framework rechazará la petición y devolverá la página de login.

Añadiendo JSTL a las JSPs para recuperar información de los usuarios

Una vez probada la funcionalidad básica, vamos a recuperar desde la JSP de inicio para usuarios administradores, algunos de los atributos de los adicionales que incluimos en el modelo de datos de nuestro ejemplo.

Para esto nos aprovecharemos de que Spring Security brinda una biblioteca de etiquetas bastante completa para interactuar con la información de seguridad. Usaremos esta taglib para acceder a la información de usuario de seguridad SecurityUser y para controlar el acceso desde la propia JSP a determinada funcionalidad en función de los roles del mismo.

En este caso, vamos a mostrar los atributos adicionales "nombre" y "apellidos" del usuario. Además verificaremos si el usuario tiene el rol "ROLE_STAFF", para brindarle, en ese caso, el acceso directo a la página de inicio de los usuarios empleados.

El código de la páginas WEB-INF/jsp/foradmins/index.jsp una vez efectuadas las adecuaciones quedaría así:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	<title>Inicio página de administradores</title>
</head>
<body>
	<h3>Página de inicio solo para administradores</h3> 
	<strong><sec:authentication property="principal.username"/></strong> conectado 
	<a href="<c:url value="/j_spring_security_logout"/>">Cerrar sesión</a>
	<p>
	Nombre y apellidos del usuario conectado:
	<strong> 
	<sec:authentication property="principal.nombre"/> 
	<sec:authentication property="principal.apellidos"/>
	</strong>  
	</p> 
	
	<sec:authorize access="hasRole('ROLE_ADMIN')">
	<p>
	Usted tiene acceso además al <a href="<c:url value="/secured/stf/index.htm"/>">Portal de Empleados</a>
	</p>
	</sec:authorize>
	
</body>
</html>

Una vez ejecutemos la aplicación desde nuestro servidor y nos autentiquemos correctamente con las siguiente credenciales de acceso: usuario/contraseña = usuario_administrador/123, visualizaremos la página de inicio para usuarios administradores:

Página de inicio para usuarios administradores

Y ahora sólo nos resta descargar el proyecto con los recursos utilizados en el ejemplo que hemos implementado juntos.

Terminos Tecnología: