Autenticação
A API do FitLocus utiliza autenticação baseada em tokens JWT (JSON Web Tokens) para proteger seus endpoints. Este guia explica como autenticar suas requisições e gerenciar sessões de usuário.Visão Geral
O FitLocus implementa um sistema de autenticação robusto que:
- Utiliza tokens JWT para autenticação stateless
- Suporta autenticação via email/senha
- Integra-se com Firebase Authentication para login social
- Implementa controle de acesso baseado em funções (RBAC)
- Gerencia sessões com expiração e renovação de tokens
Fluxo de Autenticação
1. Registro de Usuário
Para criar uma nova conta, utilize o endpoint de registro:2. Login com Email e Senha
Para autenticar um usuário existente:3. Login com Firebase
Para autenticar usando o Firebase Authentication:Utilizando o Token JWT
Após autenticar, você receberá um token JWT que deve ser incluído em todas as requisições subsequentes no cabeçalhoAuthorization:
Estrutura do Token
O token JWT contém as seguintes claims:Renovação de Token
Os tokens JWT têm validade de 24 horas. Para renovar um token antes que expire, utilize o endpoint:Logout
Para invalidar um token (logout):Controle de Acesso
O FitLocus implementa controle de acesso baseado em funções (RBAC) utilizando o campouserType do usuário. Existem dois tipos principais de usuário:
- ALUNO: Acesso a funcionalidades de execução de treinos e acompanhamento de progresso
- PERSONAL: Acesso a funcionalidades de criação de treinos e gerenciamento de alunos
Implementação no Frontend
Armazenamento do Token
No frontend, o token JWT deve ser armazenado no localStorage:Interceptor de Requisições
Configure um interceptor para incluir automaticamente o token em todas as requisições:Verificação de Autenticação
Implemente um hook para verificar se o usuário está autenticado:Considerações de Segurança
- HTTPS: Todas as comunicações com a API devem ser realizadas através de HTTPS para proteger o token JWT durante a transmissão.
- Armazenamento Seguro: No frontend, o token deve ser armazenado de forma segura (localStorage para aplicações web, SecureStorage para aplicações móveis).
- Expiração de Token: Os tokens têm validade limitada (24 horas) para mitigar riscos em caso de comprometimento.
- Validação de Token: O backend valida a assinatura e a expiração de cada token em todas as requisições.
- Proteção contra CSRF: A autenticação baseada em token JWT já oferece proteção contra ataques CSRF.
Troubleshooting
Erros Comuns
| Código | Mensagem | Solução |
|---|---|---|
| 401 | Token inválido | Verifique se o token está sendo enviado corretamente no cabeçalho Authorization |
| 401 | Token expirado | Renove o token utilizando o endpoint /users/refresh-token |
| 403 | Acesso negado | Verifique se o usuário tem permissão para acessar o recurso |
| 400 | Credenciais inválidas | Verifique se o email e senha estão corretos |
Depuração
Para depurar problemas de autenticação:- Verifique se o token está sendo enviado corretamente no cabeçalho Authorization
- Decodifique o token JWT em jwt.io para verificar as claims
- Verifique se o token não está expirado
- Confirme se o usuário tem as permissões necessárias para acessar o recurso