Skip to content

Commit

Permalink
Removendo multipart, ele já vem por padrão agora no fastapi[standard]
Browse files Browse the repository at this point in the history
closes #250
  • Loading branch information
dunossauro committed Oct 3, 2024
1 parent d1f42f0 commit 64e64e8
Showing 1 changed file with 3 additions and 11 deletions.
14 changes: 3 additions & 11 deletions aulas/06.md
Original file line number Diff line number Diff line change
Expand Up @@ -316,16 +316,6 @@ class Token(BaseModel):
token_type: str
```

### Utilizando OAuth2PasswordRequestForm

A classe `OAuth2PasswordRequestForm` é uma classe especial do FastAPI que gera automaticamente um formulário para solicitar o username (email neste caso) e a senha. Este formulário será apresentado automaticamente no Swagger UI e Redoc, facilitando a realização de testes de autenticação.

Para usar os formulários no FastAPI, precisamos instalar o `python-multipart`:

```shell title="$ Execução no terminal!"
poetry add python-multipart
```

### Criando um endpoint de geração do token

Agora criaremos o endpoint que irá autenticar o usuário e fornecer um token de acesso JWT. Este endpoint irá receber as informações de login do usuário, verificar se as credenciais são válidas e, em caso afirmativo, retornar um token de acesso JWT.
Expand All @@ -343,7 +333,7 @@ from fast_zero.security import (

@app.post('/token', response_model=Token)
def login_for_access_token(
form_data: OAuth2PasswordRequestForm = Depends(),
form_data: OAuth2PasswordRequestForm = Depends(), #(1)!
session: Session = Depends(get_session),
):
user = session.scalar(select(User).where(User.email == form_data.username))
Expand All @@ -365,6 +355,8 @@ def login_for_access_token(
return {'access_token': access_token, 'token_type': 'bearer'}
```

1. A classe `OAuth2PasswordRequestForm` é uma classe especial do FastAPI que gera automaticamente um formulário para solicitar o username (email neste caso) e a senha. Este formulário será apresentado automaticamente no Swagger UI e Redoc, facilitando a realização de testes de autenticação.

Esse endpoint recebe os dados do formulário através do `form_data` (que são injetados automaticamente graças ao `Depends()`) e tenta recuperar um usuário com o email fornecido. Se o usuário não for encontrado ou a senha não corresponder ao hash armazenado no banco de dados, uma exceção é lançada. Caso contrário, um token de acesso é criado usando o `create_access_token()` que criamos anteriormente e retornado como uma resposta.

### Testando /token
Expand Down

0 comments on commit 64e64e8

Please sign in to comment.