API de Autenticação
A API de autenticação é gerida pelo Better Auth e expõe endpoints para login, logout e gestão de sessões.
Base URL
/api/auth
Endpoints
Login com Email/Password
POST /api/auth/sign-in/email
Content-Type: application/json
{
"email": "user@example.com",
"password": "password123"
}
Resposta de Sucesso (200):
{
"user": {
"id": "user_123",
"name": "João Silva",
"email": "user@example.com",
"emailVerified": true,
"image": null
},
"session": {
"id": "session_456",
"userId": "user_123",
"expiresAt": "2024-12-09T10:00:00.000Z"
}
}
Resposta de Erro (401):
{
"error": "INVALID_CREDENTIALS",
"message": "Email ou password incorretos"
}
Logout
POST /api/auth/sign-out
Cookie: better-auth.session_token=...
Resposta de Sucesso (200):
{
"success": true
}
Obter Sessão
GET /api/auth/get-session
Cookie: better-auth.session_token=...
Resposta de Sucesso (200):
{
"user": {
"id": "user_123",
"name": "João Silva",
"email": "user@example.com",
"emailVerified": true,
"image": null,
"roles": [
{
"id": "role_1",
"name": "admin"
}
]
},
"session": {
"id": "session_456",
"userId": "user_123",
"expiresAt": "2024-12-09T10:00:00.000Z"
}
}
Resposta de Erro (401):
{
"user": null,
"session": null
}
Alterar Password
POST /api/auth/change-password
Cookie: better-auth.session_token=...
Content-Type: application/json
{
"currentPassword": "oldPassword123",
"newPassword": "newPassword456"
}
Resposta de Sucesso (200):
{
"success": true
}
Resposta de Erro (400):
{
"error": "INVALID_PASSWORD",
"message": "Password atual incorreta"
}
Uso no Cliente
Com authClient
import { signIn, signOut, useSession } from "@/lib/auth/client";
// Login
const result = await signIn.email({
email: "user@example.com",
password: "password123",
});
if (result.error) {
console.error(result.error.message);
} else {
console.log("Login bem-sucedido:", result.data.user);
}
// Logout
await signOut();
// Obter sessão
const { data: session, isPending } = useSession();
Com fetch
// Login
const response = await fetch("/api/auth/sign-in/email", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
email: "user@example.com",
password: "password123",
}),
credentials: "include",
});
// Obter sessão
const sessionResponse = await fetch("/api/auth/get-session", {
credentials: "include",
});
const session = await sessionResponse.json();
Cookies
O Better Auth utiliza cookies httpOnly para gestão de sessões:
| Cookie | Descrição | Flags |
|---|---|---|
better-auth.session_token | Token de sessão | httpOnly, secure, sameSite=lax |
Segurança
Proteções Implementadas
- Rate Limiting - Máximo 5 tentativas de login por minuto
- Brute Force Protection - Bloqueio temporário após falhas consecutivas
- Secure Cookies - httpOnly, secure em produção
- CSRF Protection - Verificação de origin
Recomendações
- Use HTTPS em produção
- Configure
trustedOriginscorretamente - Implemente MFA para contas sensíveis
- Monitore tentativas de login falhadas