POST /api/logout
Desconecta o utilizador e invalida o refresh token.
Endpoint
POST /api/logout
Headers
| Header | Valor | Obrigatorio |
|---|---|---|
| Authorization | Bearer {token} | Sim |
| Content-Type | application/json | Sim |
Corpo da requisicao
{
"refresh_token": "string"
}
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| refresh_token | string | Nao | Token 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:
- Eliminar o token de acesso do armazenamento
- Eliminar o refresh token do armazenamento
- Redirecionar o utilizador para a pagina de login
- 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