Visão Geral da Solução
O fastapi-guard surge como uma biblioteca open source desenvolvida em Python, focada em simplificar a implementação de mecanismos de segurança dentro do ecossistema FastAPI. Seu objetivo principal é abstraer a complexidade envolvida na gestão de login e controle de acesso, permitindo que desenvolvedores integrem proteção às suas rotas com menor esforço.
Stack Tecnológica e Dependências
Para operar corretamente, este módulo depende de várias ferramentas consolidadas no mercado:
- FastAPI: Framework web assíncrono para construção de APIs de alta performence.
- SQLAlchemy: ORM utilizado para gerenciar a persistência de dados e modelos de usuário.
- Passlib: Biblioteca responsável pela criptografia e hash de senhas.
- PyJWT: Implementação para criação e validação de tokens JSON Web Tokens.
Guia de Instalação e Configuração
Antes de iniciar a integração, verifique se o ambiente possui Python 3.6+ e o gerenciador pip configurados.
1. Instalação dos Pacotes
Primeiramente, instale o framework web e o servidor ASGI:
pip install fastapi uvicorn
Em seguida, adicione a biblioteca de segurança ao projeto:
pip install fastapi-guard
2. Estruturando a Aplicação
Crie um arquivo principal, por exemplo, app.py. A inicialização deve importar o gerenciador de segurança e configurar o middleware globalmente.
from fastapi import FastAPI
from fastapi_guard import GuardManager
api_instance = FastAPI()
security_engine = GuardManager()
api_instance.add_middleware(security_engine.middleware)
@api_instance.get("/index")
async def home_endpoint():
return {"status": "online", "msg": "Bem-vindo"}
3. Modelagem de Dados e Banco
É necessário estabelecer a conexão com o banco de dados e definir o schema dos usuários utilizando SQLAlchemy, conforme a arquitetura do seu sistema.
4. Protegendo Rotas
Para restringir o acesso a endpoints específicos, utilize os decoradores fornecidos pela instância de segurança. Isso força a validação do token antes da execução da função.
@api_instance.get("/dados-restritos")
@security_engine.require_auth
async def secure_data_endpoint():
return {"info": "Acesso permitido apenas para usuários autenticados"}
5. Executando o Servidor
Finalmente, inicei o servidor de desenvolvimento com recarregamento automático:
uvicorn app:api_instance --reload
Ao acessar o endpoint protegido, o sistema exigirá credenciais válidas para liberar o conteúdo.