Pular para o conteúdo principal

POST /api/logout

Desconecta o utilizador e invalida o refresh token.

Endpoint

POST /api/logout

Headers

HeaderValorObrigatorio
AuthorizationBearer {token}Sim
Content-Typeapplication/jsonSim

Corpo da requisicao

{
"refresh_token": "string"
}
CampoTipoObrigatorioDescricao
refresh_tokenstringNaoToken de atualizacao a invalidar

Resposta de sucesso

Codigo: 200 OK

{
"message": "Successfully logged out"
}

Respostas de erro

401 Unauthorized - Token invalido

{
"code": 401,
"message": "JWT Token not found"
}

Exemplos

cURL

curl -X POST https://sig.ucp-pch.org/api/logout \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "d1f2a3b4c5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0"
}'

JavaScript

const logout = async () => {
const token = localStorage.getItem('token');
const refreshToken = localStorage.getItem('refresh_token');

try {
await fetch('https://sig.ucp-pch.org/api/logout', {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
refresh_token: refreshToken
})
});
} finally {
// Limpar sempre o armazenamento local
localStorage.removeItem('token');
localStorage.removeItem('refresh_token');

// Redirecionar para a pagina de login
window.location.href = '/login';
}
};

Python

import requests

token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."
refresh_token = "d1f2a3b4c5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0"

response = requests.post(
'https://sig.ucp-pch.org/api/logout',
headers={
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json'
},
json={
'refresh_token': refresh_token
}
)

if response.status_code == 200:
print("Desconexao bem-sucedida")

Comportamento

Lado do servidor

  • O refresh token e invalidado na base de dados
  • Os tokens JWT ja emitidos permanecem validos ate a sua expiracao natural
  • O utilizador tera de se reconectar para obter novos tokens

Lado do cliente

Apos a desconexao, o cliente deve:

  1. Eliminar o token de acesso do armazenamento
  2. Eliminar o refresh token do armazenamento
  3. Redirecionar o utilizador para a pagina de login
  4. Limpar qualquer estado da aplicacao relacionado com o utilizador

Notas

  • A desconexao e recomendada antes de fechar a aplicacao
  • Mesmo sem chamar a API logout, o token expira naturalmente apos 1 hora
  • Para seguranca maxima, chame sempre a API logout para invalidar o refresh token