Neste tutorial, vamos explorar como criar uma API usando o FastAPI e implementar a autenticação de identidade com a ajuda do @jesstemporal. O FastAPI é um framework de desenvolvimento web em Python que é conhecido por sua alta performance e documentação automática gerada automaticamente.
Para começar, certifique-se de ter o Python instalado em seu sistema. Em seguida, vamos instalar o FastAPI e o uvicorn, que é um servidor web ASGI padrão para o FastAPI.
Para instalar o FastAPI e o uvicorn, abra o seu terminal e execute os seguintes comandos:
pip install fastapi
pip install uvicorn
Agora, vamos criar um arquivo chamado main.py
e importar o FastAPI:
from fastapi import FastAPI
app = FastAPI()
Em seguida, vamos criar uma rota básica para testar o servidor:
@app.get("/")
def read_root():
return {"Hello": "World"}
Agora, para executar o servidor, utilize o comando abaixo no terminal:
uvicorn main:app --reload
Acesse http://localhost:8000
em seu navegador e você deverá ver a mensagem "Hello World".
Agora, vamos implementar a autenticação de identidade com a ajuda do @jesstemporal. O @jesstemporal é um especialista em autenticação e pode ajudar a garantir a segurança da nossa API.
Para começar, vamos instalar o pacote fastapi_users
que nos ajudará a implementar a autenticação:
pip install fastapi_users
Em seguida, vamos importar os módulos necessários:
from fastapi_users import FastAPIUsers
from fastapi_users.db import TortoiseBaseUserModel, TortoiseUserDatabase
from tortoise import fields
from tortoise.models import Model
from tortoise.contrib.pydantic import pydantic_model_creator
Agora, vamos definir nosso modelo de usuário e banco de dados de usuário:
class User(TortoiseBaseUserModel):
username = fields.CharField(max_length=50, unique=True)
class PydanticMeta:
exclude = ["password_hash"]
Em seguida, vamos criar o banco de dados de usuário:
user_db = TortoiseUserDatabase(User)
Agora, vamos criar a instância do FastAPIUsers
:
fastapi_users = FastAPIUsers(
user_db,
[user_db],
User,
UserCreate,
UserUpdate,
UserDB,
)
Agora, vamos definir as rotas de autenticação:
app.include_router(fastapi_users.get_auth_router(jesstemporal))
app.include_router(fastapi_users.get_register_router(jesstemporal))
app.include_router(fastapi_users.get_reset_password_router(jesstemporal))
app.include_router(fastapi_users.get_verify_router(jesstemporal))
app.include_router(fastapi_users.get_users_router(jesstemporal))
Agora, podemos iniciar o servidor e testar a autenticação de identidade. Execute o seguinte comando no terminal:
uvicorn main:app --reload
Agora, você pode acessar as rotas de autenticação em http://localhost:8000/docs
. Aqui, você poderá criar usuários, fazer login, redefinir senhas e verificar contas.
Com a ajuda do @jesstemporal, implementamos com sucesso a autenticação de identidade em nossa API FastAPI. Espero que este tutorial tenha sido útil e que você possa continuar explorando o FastAPI e suas capacidades de autenticação.
❤❤
Ondeu eu acesso o curso de fastapi citado na live?
Muito obrigado Dudu e Jess!
👏
Uma dúvida que eu tenho, acho que foge do escopo mas também é sobre autenticação e identidade. Quando temos um site que apenas o administrador faz a curadoria (por exemplo, portfólio). E ele faz o login, tem um dashboard e outras features só dele. Qual é a melhor maneira de separar estes ambientes, seria criando dois domínios? Um que pode alterar o outro?
No caso, o usuário ele apenas só lê, não faz login ou qualquer outro input muito complexo
Quanto à questão de ser melhor usar o login social, tenho uma ressalva bem específica do Brasil. Se um ladrão rouba seu celular desbloqueado, ele terá acesso a todos os sites que você se registrou com o login social. Ao logar assim, nunca se pede a senha ou digital. Usando um gerenciador como o bitwarden, é possível exigir a senha ou digital toda vez que quiser logar em algum site. Por isso prefiro o gerenciador de senhas.