Suas ideias em realidade digital!
Em APIs REST feitas em PHP, os erros 401 Unauthorized e 403 Forbidden são extremamente comuns — e também extremamente mal utilizados.
Apesar de parecidos, eles têm significados completamente diferentes. Usar o código errado prejudica:
| Status | Significado | Quando usar |
|---|---|---|
| 401 | Não autenticado | Token ausente, inválido ou expirado |
| 403 | Autenticado, mas sem permissão | Usuário existe, mas não pode acessar |
O erro 401 indica que a requisição não possui credenciais válidas.
Authorization não enviado 'Token não informado']);
exit;
}
'Token inválido']);
exit;
}
$token = trim($matches[1]);
// validar token no banco ou JWT
---
O erro 403 significa que o usuário está autenticado, mas não tem permissão para acessar aquele recurso.
'Acesso negado']);
exit;
}
---
Siga sempre esta ordem:
---
401 e CORS: erro clássico
Se sua API usa CORS, o navegador envia uma requisição OPTIONS.
Se você retornar 401 ou 403 no OPTIONS, o front quebra.
Solução
---
Boas práticas recomendadas
- Use 401 apenas para autenticação
- Use 403 apenas para permissão
- Retorne JSON padronizado
- Nunca misture os dois códigos
- Facilite o debug do front-end
---
Checklist rápido
- [ ] Token ausente → 401
- [ ] Token inválido → 401
- [ ] Token válido, sem permissão → 403
- [ ] OPTIONS tratado corretamente