Skip to main content

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:
Payload:
Resposta:

2. Login com Email e Senha

Para autenticar um usuário existente:
Payload:
Resposta:

3. Login com Firebase

Para autenticar usando o Firebase Authentication:
Payload:
Resposta:

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çalho Authorization:
Exemplo de requisição autenticada:

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:
Cabeçalho:
Resposta:

Logout

Para invalidar um token (logout):
Cabeçalho:
Resposta:

Controle de Acesso

O FitLocus implementa controle de acesso baseado em funções (RBAC) utilizando o campo userType 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
Endpoints protegidos verificam o tipo de usuário e aplicam as restrições de acesso apropriadas:

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

  1. HTTPS: Todas as comunicações com a API devem ser realizadas através de HTTPS para proteger o token JWT durante a transmissão.
  2. Armazenamento Seguro: No frontend, o token deve ser armazenado de forma segura (localStorage para aplicações web, SecureStorage para aplicações móveis).
  3. Expiração de Token: Os tokens têm validade limitada (24 horas) para mitigar riscos em caso de comprometimento.
  4. Validação de Token: O backend valida a assinatura e a expiração de cada token em todas as requisições.
  5. Proteção contra CSRF: A autenticação baseada em token JWT já oferece proteção contra ataques CSRF.

Troubleshooting

Erros Comuns

Depuração

Para depurar problemas de autenticação:
  1. Verifique se o token está sendo enviado corretamente no cabeçalho Authorization
  2. Decodifique o token JWT em jwt.io para verificar as claims
  3. Verifique se o token não está expirado
  4. Confirme se o usuário tem as permissões necessárias para acessar o recurso

Recursos Adicionais