Geek Social — Documentação
API ReferenceAuth

POST /auth/logout

Encerrar sessão atual

POST/auth/logoutAuth: público

Revoga a sessão atual — apaga o registro correspondente em refresh_tokens e limpa o cookie HttpOnly do navegador. Outras sessões do mesmo usuário (em outros dispositivos/navegadores) não são afetadas.

Endpoint idempotente: chamar sem cookie ou com cookie inválido retorna 204 mesmo assim. Não há erro de "já estou deslogado".

Quando chamar

  • Botão "Sair" do app
  • Ao detectar inatividade prolongada se o produto quiser invalidar antes do TTL natural
  • Não chamar em error handlers — se o user já tomou 401, a sessão já está corrompida; chamar logout é redundante mas inofensivo

Request

Esta requisição não tem corpo.

Sem corpo. O backend lê o cookie refreshToken (se presente) pra deletar o registro específico.

Response

204

object

204 No Content — corpo vazio. Cookie é limpado via Set-Cookie: refreshToken=; Max-Age=0.

Erros

Sem respostas de erro documentadas.

Não há códigos de erro específicos. Mesmo sem cookie ou com token inválido, retorna 204.

Exemplos

curl -X POST 'http://localhost:3003/auth/logout' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer SEU_ACCESS_TOKEN' \
  -d '{}'
await fetch('http://localhost:3003/auth/logout', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: 'Bearer ' + accessToken,
  },
  body: JSON.stringify({}),
})

cURL prático

curl -X POST http://localhost:3003/auth/logout \
  -H 'Cookie: refreshToken=abc123...' \
  -i
# HTTP/1.1 204 No Content
# Set-Cookie: refreshToken=; Path=/; ...

Side effects

  • DB: DELETE FROM refresh_tokens WHERE token_hash = sha256(rawCookie) (se o cookie estava presente e bateu)
  • Cookie: limpado no navegador via Set-Cookie com Max-Age=0
  • Access token NÃO é invalidado — JWTs são stateless. Se você guardou um access token e usá-lo dentro dos próximos 15 minutos, ele ainda funciona. Não há blacklist no servidor por design (custo/benefício do JWT).

⚠️ Implicação de segurança: se você precisa revogar imediatamente o access (ex: detectou roubo), o caminho é POST /auth/reset-password (revoga TODOS os refresh tokens do user). O frontend deve descartar o access token em memória ao fazer logout pra evitar reutilização local.

Relacionados

On this page