Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork8.7k
🌐 Add Portuguese translation fordocs/pt/docs/tutorial/security/get-current-user.md#13188
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Merged
alejsdev merged 2 commits intofastapi:masterfromceb10n:features/translate-get-current-user-ptJan 10, 2025
Uh oh!
There was an error while loading.Please reload this page.
Merged
Changes fromall commits
Commits
Show all changes
2 commits Select commitHold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Jump to file
Failed to load files.
Loading
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
105 changes: 105 additions & 0 deletionsdocs/pt/docs/tutorial/security/get-current-user.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,105 @@ | ||
| # Obter Usuário Atual | ||
| No capítulo anterior, o sistema de segurança (que é baseado no sistema de injeção de dependências) estava fornecendo à *função de operação de rota* um `token` como uma `str`: | ||
| {* ../../docs_src/security/tutorial001_an_py39.py hl[12] *} | ||
| Mas isso ainda não é tão útil. | ||
| Vamos fazer com que ele nos forneça o usuário atual. | ||
| ## Criar um modelo de usuário | ||
| Primeiro, vamos criar um modelo de usuário com Pydantic. | ||
| Da mesma forma que usamos o Pydantic para declarar corpos, podemos usá-lo em qualquer outro lugar: | ||
| {* ../../docs_src/security/tutorial002_an_py310.py hl[5,12:6] *} | ||
| ## Criar uma dependência `get_current_user` | ||
| Vamos criar uma dependência chamada `get_current_user`. | ||
| Lembra que as dependências podem ter subdependências? | ||
| `get_current_user` terá uma dependência com o mesmo `oauth2_scheme` que criamos antes. | ||
| Da mesma forma que estávamos fazendo antes diretamente na *operação de rota*, a nossa nova dependência `get_current_user` receberá um `token` como uma `str` da subdependência `oauth2_scheme`: | ||
| {* ../../docs_src/security/tutorial002_an_py310.py hl[25] *} | ||
| ## Obter o usuário | ||
| `get_current_user` usará uma função utilitária (falsa) que criamos, que recebe um token como uma `str` e retorna nosso modelo Pydantic `User`: | ||
| {* ../../docs_src/security/tutorial002_an_py310.py hl[19:22,26:27] *} | ||
| ## Injetar o usuário atual | ||
| Então agora nós podemos usar o mesmo `Depends` com nosso `get_current_user` na *operação de rota*: | ||
| {* ../../docs_src/security/tutorial002_an_py310.py hl[31] *} | ||
| Observe que nós declaramos o tipo de `current_user` como o modelo Pydantic `User`. | ||
| Isso nos ajudará dentro da função com todo o preenchimento automático e verificações de tipo. | ||
| /// tip | Dica | ||
| Você pode se lembrar que corpos de requisição também são declarados com modelos Pydantic. | ||
| Aqui, o **FastAPI** não ficará confuso porque você está usando `Depends`. | ||
| /// | ||
| /// check | Verifique | ||
| A forma como esse sistema de dependências foi projetado nos permite ter diferentes dependências (diferentes "dependables") que retornam um modelo `User`. | ||
| Não estamos restritos a ter apenas uma dependência que possa retornar esse tipo de dado. | ||
| /// | ||
| ## Outros modelos | ||
| Agora você pode obter o usuário atual diretamente nas *funções de operação de rota* e lidar com os mecanismos de segurança no nível da **Injeção de Dependências**, usando `Depends`. | ||
| E você pode usar qualquer modelo ou dado para os requisitos de segurança (neste caso, um modelo Pydantic `User`). | ||
| Mas você não está restrito a usar um modelo de dados, classe ou tipo específico. | ||
| Você quer ter apenas um `id` e `email`, sem incluir nenhum `username` no modelo? Claro. Você pode usar essas mesmas ferramentas. | ||
| Você quer ter apenas uma `str`? Ou apenas um `dict`? Ou uma instância de modelo de classe de banco de dados diretamente? Tudo funciona da mesma forma. | ||
| Na verdade, você não tem usuários que fazem login no seu aplicativo, mas sim robôs, bots ou outros sistemas, que possuem apenas um token de acesso? Novamente, tudo funciona da mesma forma. | ||
| Apenas use qualquer tipo de modelo, qualquer tipo de classe, qualquer tipo de banco de dados que você precise para a sua aplicação. O **FastAPI** cobre tudo com o sistema de injeção de dependências. | ||
| ## Tamanho do código | ||
| Este exemplo pode parecer verboso. Lembre-se de que estamos misturando segurança, modelos de dados, funções utilitárias e *operações de rota* no mesmo arquivo. | ||
| Mas aqui está o ponto principal. | ||
| O código relacionado à segurança e à injeção de dependências é escrito apenas uma vez. | ||
| E você pode torná-lo tão complexo quanto quiser. E ainda assim, tê-lo escrito apenas uma vez, em um único lugar. Com toda a flexibilidade. | ||
| Mas você pode ter milhares de endpoints (*operações de rota*) usando o mesmo sistema de segurança. | ||
| E todos eles (ou qualquer parte deles que você desejar) podem aproveitar o reuso dessas dependências ou de quaisquer outras dependências que você criar. | ||
| E todos esses milhares de *operações de rota* podem ter apenas 3 linhas: | ||
| {* ../../docs_src/security/tutorial002_an_py310.py hl[30:32] *} | ||
| ## Recapitulação | ||
| Agora você pode obter o usuário atual diretamente na sua *função de operação de rota*. | ||
| Já estamos na metade do caminho. | ||
| Só precisamos adicionar uma *operação de rota* para que o usuário/cliente realmente envie o `username` e `password`. | ||
| Isso vem a seguir. |
Oops, something went wrong.
Uh oh!
There was an error while loading.Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.