API RESTful para cadastro e login de usuĆ”rios, construĆda com Spring Boot 3, Spring Security e autenticação via JSON Web Tokens (JWT).
- Java 21
- Spring Boot 3
- Spring Web
- Spring Data JPA
- Spring Security
- Lombok
- PostgreSQL
- Maven
- JJWT
O projeto foi gerado usando o Spring Initializr com as seguintes dependĆŖncias:
- Spring Web
- Spring Data JPA
- Spring Security
- Validation
- PostgreSQL Driver
- Lombok
- Spring Boot DevTools
- Pré-requisito: Tenha o Java 17 (ou superior) e o Maven instalados. Tenha uma instância do PostgreSQL rodando.
- Crie um banco de dados no PostgreSQL (ex:
CREATE DATABASE auth_db;). - Configure suas credenciais do banco no arquivo
src/main/resources/application.properties. - Abra o projeto em sua IDE (ex: IntelliJ IDEA).
- Execute a classe principal
UsersApplication.java. - O servidor estarĆ” rodando em
http://localhost:8080.
-
POST /api/auth/register- Cadastra um novo usuƔrio.
- Body:
{ "username": "user", "email": "user@example.com", "password": "password123" }
-
POST /api/auth/login- Autentica um usuƔrio e retorna um token JWT.
- Body:
{ "username": "user", "password": "password123" } - Retorno:
{ "token": "seu-jwt-token" }
GET /api/users/me- Retorna o perfil do usuƔrio atualmente autenticado.
- Header Obrigatório:
Authorization: Bearer <seu-jwt-token>
# Registrar
curl -X POST http://localhost:8080/api/auth/register -H "Content-Type: application/json" -d '{"username": "testuser", "email": "test@user.com", "password": "password"}'
# Login e extrair token
TOKEN=$(curl -s -X POST http://localhost:8080/api/auth/login -H "Content-Type: application/json" -d '{"username": "testuser", "password": "password"}' | jq -r .token)
echo "Token: $TOKEN"
# Acessar rota protegida
curl -X GET http://localhost:8080/api/users/me -H "Authorization: Bearer $TOKEN"