Spring Security 6 con configuración moderna
BCrypt para cifrado de contraseñas
CSRF Protection habilitado
Session Management seguro
Invalidación de sesión en logout
👥 Control de Acceso (RBAC)
3 roles predefinidos: ADMIN, USER, GUEST
Redirección automática por rol después del login
Rutas protegidas por autorización
Páginas públicas configurables
Thymeleaf con integración Spring Security
Templates responsivos
Login page personalizada
Dashboards específicos por rol
Spring Data JPA ready
H2 Database para desarrollo
Usuarios en memoria para demo
Fácil migración a PostgreSQL/MySQL
src/main/java/com/duoc/seguridadcalidad/
├── config/
│ └── WebSecurityConfig.java # Configuración de Spring Security
├── controller/
│ ├── AdminController.java # Endpoints /admin/**
│ ├── UserController.java # Endpoints /user/**
│ └── HomeController.java # Endpoints públicos y login
├── model/
│ └── User.java # Entidad de usuario
├── repository/
│ └── UserRepository.java # JPA Repository
├── service/
│ └── UserService.java # Lógica de negocio
└── SeguridadcalidadApplication.java
🔧 Configuración de Seguridad
Rol
Rutas Permitidas
Redirección Post-Login
ADMIN
/admin/**, /home, /
/admin/dashboard
USER
/user/**, /home, /
/user/programar_cita
GUEST
/guest/**, /home, /
/guest/welcome
Usuario
Contraseña
Rol
admin
admin123
ADMIN
cliente
cliente123
USER
guest
guest123
GUEST
# Clonar el repositorio
git clone https://github.com/RodrigoSanchezDev/LoginSystem-SpringSecurity.git
cd LoginSystem-SpringSecurity
# Ejecutar con Maven
./mvnw spring-boot:run
# O compilar y ejecutar
./mvnw clean package
java -jar target/seguridadcalidad-0.0.1-SNAPSHOT.jar
🌐 http://localhost:8080
📊 H2 Console: http://localhost:8080/h2-console
Ruta
Descripción
Acceso
/
Página principal
Público
/login
Formulario de login
Público
/admin/dashboard
Panel de administración
Solo ADMIN
/admin/registrar_paciente
Registro de pacientes
Solo ADMIN
/user/programar_cita
Programar citas
Solo USER
/guest/welcome
Bienvenida invitados
Solo GUEST
🔐 Características de Seguridad Implementadas
@ Bean
public SecurityFilterChain securityFilterChain (HttpSecurity http ) throws Exception {
http
.authorizeHttpRequests (auth -> auth
.requestMatchers ("/" , "/home" , "/login" , "/css/**" ).permitAll ()
.requestMatchers ("/admin/**" ).hasRole ("ADMIN" )
.requestMatchers ("/user/**" ).hasRole ("USER" )
.anyRequest ().authenticated ()
)
.formLogin (form -> form
.loginPage ("/login" )
.successHandler (customAuthenticationSuccessHandler ())
.permitAll ()
)
.logout (logout -> logout
.invalidateHttpSession (true )
.deleteCookies ("JSESSIONID" )
);
return http .build ();
}
Tecnología
Versión
Propósito
Spring Boot
3.4.3
Framework base
Spring Security
6.x
Autenticación y autorización
Spring Data JPA
3.x
Persistencia
Thymeleaf
3.x
Motor de plantillas
H2 Database
2.x
Base de datos en memoria
BCrypt
-
Cifrado de contraseñas
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
⭐ Si este proyecto te fue útil, considera darle una estrella ⭐