]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Update Chinese translation for `docs/zh/docs/tutorial/security/get-current-user...
authorjaystone776 <jilei776@gmail.com>
Sat, 30 Mar 2024 22:46:46 +0000 (06:46 +0800)
committerGitHub <noreply@github.com>
Sat, 30 Mar 2024 22:46:46 +0000 (17:46 -0500)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
docs/zh/docs/tutorial/security/get-current-user.md

index 477baec3afbf4a2d56ba4db9a2c8151e1c8d2ed2..1f17f5bd9164043cef53697e00801d75e9c356ee 100644 (file)
@@ -1,35 +1,35 @@
 # 获取当前用户
 
-在上一章节中,(基于依赖项注入系统的)安全系统向*路径操作函数*提供了一个 `str` 类型的 `token`:
+上一章中,(基于依赖注入系统的)安全系统向*路径操作函数*传递了 `str` 类型的 `token`:
 
 ```Python hl_lines="10"
 {!../../../docs_src/security/tutorial001.py!}
 ```
 
-但这还不是很实用。
+但这并不实用。
 
-让我们来使它返回当前用户给我们
+接下来,我们学习如何返回当前用户
 
 
-## 创建一个用户模型
+## 创建用户模型
 
-首先,让我们来创建一个用户 Pydantic 模型。
+首先,创建 Pydantic 用户模型。
 
-ä¸\8e使ç\94¨ Pydantic å£°æ\98\8e请æ±\82ä½\93ç\9a\84æ\96¹å¼\8fç\9b¸å\90\8cï¼\8cæ\88\91们å\8f¯ä»¥å\9c¨å\85¶ä»\96ä»»ä½\95å\9c°æ\96¹ä½¿ç\94¨å®\83
+ä¸\8e使ç\94¨ Pydantic å£°æ\98\8e请æ±\82ä½\93ç\9b¸å\90\8cï¼\8cå¹¶ä¸\94å\8f¯å\9c¨ä»»ä½\95ä½\8d置使ç\94¨
 
 ```Python hl_lines="5  12-16"
 {!../../../docs_src/security/tutorial002.py!}
 ```
 
-## 创建一个 `get_current_user` 依赖项
+## 创建 `get_current_user` 依赖项
 
-让我们来创建一个 `get_current_user` 依赖项。
+创建 `get_current_user` 依赖项。
 
-还记得依赖项可以有子依赖项吗?
+还记得依赖项支持子依赖项吗?
 
-`get_current_user` 将具有一个我们之前所创建的同一个 `oauth2_scheme` 作为依赖项。
+`get_current_user` 使用 `oauth2_scheme` 作为依赖项。
 
-与我们之前直接在路径操作中所做的相同,我们新的依赖项 `get_current_user` 将从子依赖项 `oauth2_scheme` 中接收一个 `str` 类型的 `token`:
+与之前直接在路径操作中的做法相同,新的 `get_current_user` 依赖项从子依赖项 `oauth2_scheme` 中接收 `str` 类型的 `token`:
 
 ```Python hl_lines="25"
 {!../../../docs_src/security/tutorial002.py!}
@@ -37,7 +37,7 @@
 
 ## 获取用户
 
-`get_current_user` 将使用我们创建的(伪)工具函数,该函数接收 `str` 类型的令牌并返回我们的 Pydantic `User` 模型:
+`get_current_user` 使用创建的(伪)工具函数,该函数接收 `str` 类型的令牌,并返回 Pydantic 的 `User` 模型:
 
 ```Python hl_lines="19-22  26-27"
 {!../../../docs_src/security/tutorial002.py!}
 
 ## 注入当前用户
 
\9b æ­¤ç\8e°å\9c¨æ\88\91们å\8f¯ä»¥å\9c¨*è·¯å¾\84æ\93\8dä½\9c*中使ç\94¨ `get_current_user` ä½\9c为 `Depends` äº\86
\9c¨*è·¯å¾\84æ\93\8dä½\9c* ç\9a\84 `Depends` ä¸­ä½¿ç\94¨ `get_current_user`
 
 ```Python hl_lines="31"
 {!../../../docs_src/security/tutorial002.py!}
 ```
 
-注意我们将 `current_user` 的类型声明为 Pydantic 模型 `User`
+注意,此处把 `current_user` 的类型声明为 Pydantic 的 `User` 模型
 
-这将帮助我们在函数内部使用所有的代码补全和类型检查。
+这有助于在函数内部使用代码补全和类型检查。
 
-!!! tip
-    你可能还记得请求体也是使用 Pydantic 模型来声明的。
+!!! tip "提示"
 
-    在这里 **FastAPI** 不会搞混,因为你正在使用的是 `Depends`
+    还记得请求体也是使用 Pydantic 模型声明的吧
 
-!!! check
-    这种依赖系统的设计方式使我们可以拥有不同的依赖项(不同的「可依赖类型」),并且它们都返回一个 `User` 模型。
+    放心,因为使用了 `Depends`,**FastAPI** 不会搞混。
 
-    我们并未被局限于只能有一个返回该类型数据的依赖项。
+!!! check "检查"
 
+    依赖系统的这种设计方式可以支持不同的依赖项返回同一个 `User` 模型。
 
-## 其他模型
+    而不是局限于只能有一个返回该类型数据的依赖项。
 
-现在你可以直接在*路径操作函数*中获取当前用户,并使用 `Depends` 在**依赖注入**级别处理安全性机制。
 
-你可以使用任何模型或数据来满足安全性要求(在这个示例中,使用的是 Pydantic 模型 `User`)。
+## 其它模型
 
-但是你并未被限制只能使用某些特定的数据模型,类或类型
+接下来,直接在*路径操作函数*中获取当前用户,并用 `Depends` 在**依赖注入**系统中处理安全机制
 
-你想要在模型中使用 `id` 和 `email` 而不使用任何的 `username`?当然可以。你可以同样地使用这些工具
+开发者可以使用任何模型或数据满足安全需求(本例中是 Pydantic 的 `User` 模型)
 
-你只想要一个 `str`?或者仅仅一个 `dict`?还是直接一个数据库模型类的实例?它们的工作方式都是一样的
+而且,不局限于只能使用特定的数据模型、类或类型
 
-实际上你没有用户登录到你的应用程序,而是只拥有访问令牌的机器人,程序或其他系统?再一次,它们的工作方式也是一样的
+不想在模型中使用 `username`,而是使用 `id` 和 `email`?当然可以。这些工具也支持
 
°½ç®¡å\8e»ä½¿ç\94¨ä½ ç\9a\84åº\94ç\94¨ç¨\8båº\8fæ\89\80é\9c\80è¦\81ç\9a\84ä»»ä½\95模å\9e\8bï¼\8cä»»ä½\95ç±»ï¼\8cä»»ä½\95æ\95°æ\8d®åº\93ã\80\82**FastAPI** é\80\9aè¿\87ä¾\9dèµ\96项注å\85¥ç³»ç»\9fé\83½å¸®ä½ æ\90\9eå®\9a
\8fªæ\83³ä½¿ç\94¨å­\97符串ï¼\9fæ\88\96å­\97å\85¸ï¼\9fç\94\9aè\87³æ\98¯æ\95°æ\8d®åº\93类模å\9e\8bç\9a\84å®\9eä¾\8bï¼\9få·¥ä½\9cæ\96¹å¼\8fé\83½ä¸\80æ ·
 
+实际上,就算登录应用的不是用户,而是只拥有访问令牌的机器人、程序或其它系统?工作方式也一样。
 
-## 代码体积
+尽管使用应用所需的任何模型、类、数据库。**FastAPI** 通过依赖注入系统都能帮您搞定。
 
-这个示例似乎看起来很冗长。考虑到我们在同一文件中混合了安全性,数据模型工具函数和路径操作等代码。
 
-但关键的是。
+## 代码大小
 
-安全性和依赖项注入内容只需要编写一次
+这个示例看起来有些冗长。毕竟这个文件同时包含了安全、数据模型的工具函数,以及路径操作等代码
 
-ä½ å\8f¯ä»¥æ ¹æ\8d®é\9c\80è¦\81使å\85¶å\8f\98å¾\97å¾\88å¤\8dæ\9d\82ã\80\82è\80\8cä¸\94å\8fªé\9c\80è¦\81å\9c¨ä¸\80个å\9c°æ\96¹å\86\99ä¸\80次ã\80\82ä½\86ä»\8dç\84¶å\85·å¤\87æ\89\80æ\9c\89ç\9a\84ç\81µæ´»æ\80§ã\80\82
+ä½\86ï¼\8cå\85³é\94®æ\98¯ï¼\9a
 
-但是,你可以有无数个使用同一安全系统的端点(*路径操作*)。
+**安全和依赖注入的代码只需要写一次。**
 
-所有(或所需的任何部分)的端点,都可以利用对这些或你创建的其他依赖项进行复用所带来的优势
+就算写得再复杂,也只是在一个位置写一次就够了。所以,要多复杂就可以写多复杂
 
-所有的这无数个*路径操作*甚至可以小到只需 3 行代码:
+但是,就算有数千个端点(*路径操作*),它们都可以使用同一个安全系统。
+
+而且,所有端点(或它们的任何部件)都可以利用这些依赖项或任何其它依赖项。
+
+所有*路径操作*只需 3 行代码就可以了:
 
 ```Python hl_lines="30-32"
 {!../../../docs_src/security/tutorial002.py!}
 ```
 
-## 
+## 
 
-现在可以直接在*路径操作函数*中获取当前用户。
+现在,我们可以直接在*路径操作函数*中获取当前用户。
 
-我们已经进行到一半了
+至此,安全的内容已经讲了一半
 
-我们只需要再为用户/客户端添加一个真正发送 `username` 和 `password` 的*路径操作*
+只要再为用户或客户端的*路径操作*添加真正发送 `username` 和 `password` 的功能就可以了
 
-这些内容在下一章节
+下一章见