From: Logan <146642263+logan2d5@users.noreply.github.com>
Date: Wed, 3 Jul 2024 02:17:04 +0000 (+0800)
Subject: 🌐 Update Chinese translation for `docs/tutorial/security/oauth2-jwt.md` (#11781)
X-Git-Tag: 0.111.1~42
X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f785676b831f127b39d0c42fb92342906f0492b1;p=thirdparty%2Ffastapi%2Ffastapi.git
🌐 Update Chinese translation for `docs/tutorial/security/oauth2-jwt.md` (#11781)
---
diff --git a/docs/zh/docs/tutorial/security/oauth2-jwt.md b/docs/zh/docs/tutorial/security/oauth2-jwt.md
index 33a4d7fc76..117f74d3ee 100644
--- a/docs/zh/docs/tutorial/security/oauth2-jwt.md
+++ b/docs/zh/docs/tutorial/security/oauth2-jwt.md
@@ -26,29 +26,25 @@ JWT å符串没æå å¯ï¼ä»»ä½äººé½è½ç¨å®æ¢å¤åå§ä¿¡æ¯ã
å¦éæ·±å
¥äºè§£ JWT 令çï¼äºè§£å®ç工使¹å¼ï¼è¯·åé
https://jwt.ioã
-## å®è£
`python-jose`
+## å®è£
`PyJWT`
-å®è£
`python-jose`ï¼å¨ Python ä¸çæåæ ¡éª JWT 令çï¼
+å®è£
`PyJWT`ï¼å¨ Python ä¸çæåæ ¡éª JWT 令çï¼
```console
-$ pip install python-jose[cryptography]
+$ pip install pyjwt
---> 100%
```
-Python-jose éè¦å®è£
é
å¥çå å¯å端ã
+!!! info "说æ"
-æ¬æç¨æ¨èçå端æ¯ï¼pyca/cryptographyã
+ å¦ææ¨æç®ä½¿ç¨ç±»ä¼¼ RSA æ ECDSA çæ°åç¾åç®æ³ï¼æ¨åºè¯¥å®è£
å å¯åºä¾èµé¡¹ `pyjwt[crypto]`ã
-!!! tip "æç¤º"
-
- æ¬æç¨ä»¥åä½¿ç¨ PyJWTã
-
- ä½åæ¥æ¢æäº Python-joseï¼å 为 Python-jose æ¯æ PyJWT çææåè½ï¼è¿æ¯æä¸å
¶å®å·¥å
·éææ¶å¯è½ä¼ç¨å°çä¸äºå
¶å®åè½ã
+ æ¨å¯ä»¥å¨ PyJWT Installation docs è·å¾æ´å¤ä¿¡æ¯ã
## å¯ç åå¸
@@ -62,7 +58,7 @@ $ pip install python-jose[cryptography]
åå å¾ç®åï¼å妿°æ®åºè¢«çï¼çªè´¼æ æ³è·åç¨æ·çææå¯ç ï¼å¾å°çåªæ¯åå¸å¼ã
-è¿æ ·ä¸æ¥ï¼çªè´¼å°±æ æ³å¨å
¶å®åºç¨ä¸ä½¿ç¨çªåçå¯ç ï¼è¦ç¥éï¼å¾å¤ç¨æ·å¨ææç³»ç»ä¸é½ä½¿ç¨ç¸åçå¯ç ï¼é£é©è¶
大ï¼ã
+è¿æ ·ä¸æ¥ï¼çªè´¼å°±æ æ³å¨å
¶å®åºç¨ä¸ä½¿ç¨çªåçå¯ç ï¼è¦ç¥éï¼å¾å¤ç¨æ·å¨ææç³»ç»ä¸é½ä½¿ç¨ç¸åçå¯ç ï¼é£é©è¶
大ï¼ã
## å®è£
`passlib`
@@ -112,9 +108,41 @@ $ pip install passlib[bcrypt]
第ä¸ä¸ªå½æ°ç¨äºèº«ä»½éªè¯ï¼å¹¶è¿åç¨æ·ã
-```Python hl_lines="7 48 55-56 59-60 69-75"
-{!../../../docs_src/security/tutorial004.py!}
-```
+=== "Python 3.10+"
+
+ ```Python hl_lines="8 49 56-57 60-61 70-76"
+ {!> ../../../docs_src/security/tutorial004_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="8 49 56-57 60-61 70-76"
+ {!> ../../../docs_src/security/tutorial004_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="8 50 57-58 61-62 71-77"
+ {!> ../../../docs_src/security/tutorial004_an.py!}
+ ```
+
+=== "Python 3.10+ non-Annotated"
+
+ !!! tip
+ Prefer to use the `Annotated` version if possible.
+
+ ```Python hl_lines="7 48 55-56 59-60 69-75"
+ {!> ../../../docs_src/security/tutorial004_py310.py!}
+ ```
+
+=== "Python 3.8+ non-Annotated"
+
+ !!! tip
+ Prefer to use the `Annotated` version if possible.
+
+ ```Python hl_lines="8 49 56-57 60-61 70-76"
+ {!> ../../../docs_src/security/tutorial004.py!}
+ ```
!!! note "ç¬è®°"
@@ -160,9 +188,41 @@ $ openssl rand -hex 32
å¦æä»¤çæ æï¼åç´æ¥è¿å HTTP é误ã
-```Python hl_lines="89-106"
-{!../../../docs_src/security/tutorial004.py!}
-```
+=== "Python 3.10+"
+
+ ```Python hl_lines="4 7 13-15 29-31 79-87"
+ {!> ../../../docs_src/security/tutorial004_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="4 7 13-15 29-31 79-87"
+ {!> ../../../docs_src/security/tutorial004_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="4 7 14-16 30-32 80-88"
+ {!> ../../../docs_src/security/tutorial004_an.py!}
+ ```
+
+=== "Python 3.10+ non-Annotated"
+
+ !!! tip
+ Prefer to use the `Annotated` version if possible.
+
+ ```Python hl_lines="3 6 12-14 28-30 78-86"
+ {!> ../../../docs_src/security/tutorial004_py310.py!}
+ ```
+
+=== "Python 3.8+ non-Annotated"
+
+ !!! tip
+ Prefer to use the `Annotated` version if possible.
+
+ ```Python hl_lines="4 7 13-15 29-31 79-87"
+ {!> ../../../docs_src/security/tutorial004.py!}
+ ```
## æ´æ° `/token` *è·¯å¾æä½*
@@ -170,9 +230,41 @@ $ openssl rand -hex 32
å建并è¿åçæ£ç JWT 访é®ä»¤çã
-```Python hl_lines="115-130"
-{!../../../docs_src/security/tutorial004.py!}
-```
+=== "Python 3.10+"
+
+ ```Python hl_lines="118-133"
+ {!> ../../../docs_src/security/tutorial004_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="118-133"
+ {!> ../../../docs_src/security/tutorial004_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="119-134"
+ {!> ../../../docs_src/security/tutorial004_an.py!}
+ ```
+
+=== "Python 3.10+ non-Annotated"
+
+ !!! tip
+ Prefer to use the `Annotated` version if possible.
+
+ ```Python hl_lines="115-130"
+ {!> ../../../docs_src/security/tutorial004_py310.py!}
+ ```
+
+=== "Python 3.8+ non-Annotated"
+
+ !!! tip
+ Prefer to use the `Annotated` version if possible.
+
+ ```Python hl_lines="116-131"
+ {!> ../../../docs_src/security/tutorial004.py!}
+ ```
### JWT `sub` çææ¯ç»è
@@ -261,7 +353,7 @@ OAuth2 æ¯æ**`scopes`**ï¼ä½ç¨åï¼ã
å¼åè
å¯ä»¥çµæ´»éæ©æéå项ç®çå®å
¨æºå¶ã
-è¿å¯ä»¥ç´æ¥ä½¿ç¨ `passlib` å `python-jose` çç»´æ¤è¯å¥½ã使ç¨å¹¿æ³çå
ï¼è¿æ¯å 为 **FastAPI** ä¸éè¦ä»»ä½å¤ææºå¶ï¼å°±è½éæå¤é¨çå
ã
+è¿å¯ä»¥ç´æ¥ä½¿ç¨ `passlib` å `PyJWT` çç»´æ¤è¯å¥½ã使ç¨å¹¿æ³çå
ï¼è¿æ¯å 为 **FastAPI** ä¸éè¦ä»»ä½å¤ææºå¶ï¼å°±è½éæå¤é¨çå
ã
èä¸ï¼**FastAPI** è¿æä¾äºä¸äºå·¥å
·ï¼å¨ä¸å½±åçµæ´»ã稳å®åå®å
¨çåæä¸ï¼å°½å¯è½å°ç®åå®å
¨æºå¶ã