FastAPI and Identity with @jesstemporal | Python Live #254

Posted by


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.

0 0 votes
Article Rating
5 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@Eliasdevcode
1 month ago

❤❤

@wallacewinkler3694
1 month ago

Ondeu eu acesso o curso de fastapi citado na live?

@rodrigogodoysi
1 month ago

Muito obrigado Dudu e Jess!
👏

@joaomatheus1993
1 month ago

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

@joaomarceloav
1 month ago

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.