Este é um projeto de portfólio que demonstra a implementação de uma API de autenticação completa e segura utilizando Python e o framework Flask. O foco principal é a integração entre um backend robusto e um frontend simples, mas funcional, para gerenciar o registro e o login de usuários com segurança.
Veja abaixo as telas principais da aplicação em ação.
Página de Dashboard, acessível apenas com autenticação.
Telas de Registro e Login, que gerenciam a autenticação.
-
Backend:
Python
,Flask
,Flask-JWT-Extended
,SQLAlchemy
eBcrypt
. -
Frontend:
HTML5
,CSS3 (com Bootstrap)
eJavaScript (ES6)
. -
Banco de Dados:
SQLite
.
Este projeto foi desenvolvido com foco em demonstrar um fluxo de autenticação e autorização completo, cobrindo tanto o backend quanto o frontend. As principais funcionalidades incluem:
-
🔐 Autenticação Segura de Usuário: O sistema permite o cadastro de novos usuários, com senhas criptografadas usando Bcrypt para garantir que as credenciais nunca sejam armazenadas em texto simples.
-
🔑 Geração de JWT (JSON Web Token): Após o login, o backend gera um token de acesso que atua como uma "identidade digital". Este token é usado para autorizar requisições subsequentes.
-
🛡️ Rotas Protegidas por JWT: A API possui endpoints que só podem ser acessados com um JWT válido. Isso garante que apenas usuários autenticados possam acessar dados e funcionalidades restritas.
-
🖥️ Gerenciamento de Estado no Frontend: O token de acesso é armazenado no
localStorage
do navegador. O JavaScript da aplicação é responsável por incluir este token nas requisições para as rotas protegidas. -
🚫 Proteção de Páginas: O projeto implementa uma verificação de token no frontend que impede que usuários não autenticados vejam o conteúdo da página protegida, redirecionando-os para o login de forma imediata.
-
🚪 Funcionalidade de Logout: O usuário pode facilmente fazer logout, o que remove o token do armazenamento local e encerra a sessão.
-
📊 Estrutura de Código Organizada: O código é modular, com separação clara entre as rotas da API, os modelos de dados e a lógica de serviço, facilitando a manutenção e a escalabilidade.
Certifique-se de ter o Python 3.8+ e o pip instalados.
Clone o repositório:
git clone https://github.com/seu-usuario/FLASK_JWT_API.git
cd FLASK_JWT_API
Crie e ative um ambiente virtual:
Windows:
python -m venv venv
.\venv\Scripts\activate
macOS/Linux:
python3 -m venv venv
source venv/bin/activate
Instale as dependências:
pip install -r requirements.txt
Inicialize o banco de dados:
Flask shell
>>> from app import db
>>> db.create_all()
>>> exit()
(Este comando irá criar o arquivo site.db
dentro da pasta instance.)
Defina a chave secreta do JWT:
JWT_SECRET_KEY='sua_chave_secreta_segura_aqui'
(Atenção: Mantenha esta chave secreta e única.)
Para iniciar o servidor, execute o arquivo run.py:
python run.py
O servidor estará rodando em http://127.0.0.1:5000/.
A aplicação expõe os seguintes endpoints:
URL | Método | Descrição | Autenticação |
---|---|---|---|
/ |
GET |
Rota para a página de registro. | Pública |
/login |
GET |
Rota para a página de login. | Pública |
/dashboard |
GET |
Rota para a página de dashboard. | Pública |
/register |
POST |
Cria um novo usuário. | Pública |
/login |
POST |
Autentica o usuário e retorna um JWT. | Pública |
/protected |
GET |
Retorna dados do usuário logado. | Protegida |
- Felipe Oliveira - Code-Lipe
Este projeto está licenciado sob a Licença MIT.
A Licença MIT é uma licença de software de código aberto permissiva que permite a reutilização e redistribuição do software, tanto em projetos de código aberto quanto em projetos proprietários, desde que a licença original e o aviso de direitos autorais sejam incluídos.