Este proyecto es una implementación de un sistema de autenticación y autorización utilizando JSON Web Tokens (JWT) en una aplicación Spring Boot. La aplicación permite a los usuarios registrarse, iniciar sesión y acceder a rutas protegidas utilizando JWT para la autenticación.
- Java 11 o superior
- Maven 3.6.0 o superior
- MySQL (puedes usar cualquier otra base de datos cambiando la configuración en
application.properties)
-
Clona el repositorio en tu máquina local:
git clone https://github.com/Benjax14/login-JWT-SpringBoot.git cd login-JWT-SpringBoot -
Configura tu base de datos en el archivo
application.properties:spring.datasource.url=jdbc:postgresql://localhost:5432/your-database spring.datasource.username=your-username spring.datasource.password=your-password spring.jpa.hibernate.ddl-auto=update
-
Crea un archivo
.enven la raíz del proyecto para almacenar las variables de entorno necesarias:SPRING_DATASOURCE_USERNAME=root SPRING_DATASOURCE_PASSWORD=1234 SPRING_DATASOURCE_DB=db
-
Instala las dependencias y construye el proyecto usando Maven:
mvn clean install
-
Inicia la aplicación:
mvn spring-boot:run
-
URL:
/api/auth/register -
Método:
POST -
Descripción: Registra un nuevo usuario en el sistema.
-
Cuerpo de la petición:
{ "username": "[email protected]", "password": "password123", "firstname": "Benjamin", "lastname": "Contreras", "country": "Chile" }
-
URL:
/api/auth/login -
Método:
POST -
Descripción: Autentica al usuario y devuelve un JWT.
-
Cuerpo de la petición:
{ "username": "existinguser", "password": "password123" } -
Respuesta:
{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }
-
URL:
/api/v1/demo -
Método:
POST -
Descripción: Accede a esta ruta solo con un JWT válido.
-
Encabezado de la petición:
Authorization: Bearer <token>
src/main/java/com/benja/login/login/Config: Contiene la configuración de seguridad y beans.src/main/java/com/benja/login/login/Controllers: Contiene los controladores REST.src/main/java/com/benja/login/login/Entities: Contiene las entidades y modelos de datos.src/main/java/com/benja/login/login/Repositories: Contiene los repositorios de Spring Data JPA.src/main/java/com/benja/login/login/Jwt: Contiene la lógica de generación y validación de JWT.src/main/java/com/benja/login/login/Services: Contiene servicios de negocio que contienen la lógica de la aplicación.src/main/java/com/benja/login/login/Request: Clases para las solicitudes de entrada.src/main/java/com/benja/login/login/Response: Clases para las respuestas de las solicitudes.
Este proyecto está licenciado bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.