Skip to content

Commit

Permalink
🌐 Add Korean translation for `docs/ko/docs/tutorial/security/get-curr…
Browse files Browse the repository at this point in the history
…ent-user.md` (#5737)
  • Loading branch information
KdHyeon0661 committed Jan 23, 2024
1 parent a56d32c commit 0ec0df5
Showing 1 changed file with 151 additions and 0 deletions.
151 changes: 151 additions & 0 deletions docs/ko/docs/tutorial/security/get-current-user.md
@@ -0,0 +1,151 @@
# ν˜„μž¬ μ‚¬μš©μž κ°€μ Έμ˜€κΈ°

이전 μž₯μ—μ„œ (μ˜μ‘΄μ„± μ£Όμž… μ‹œμŠ€ν…œμ„ 기반으둜 ν•œ)λ³΄μ•ˆ μ‹œμŠ€ν…œμ€ *경둜 μž‘λ™ ν•¨μˆ˜*μ—μ„œ `str`둜 `token`을 μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€:

```Python hl_lines="10"
{!../../../docs_src/security/tutorial001.py!}
```

κ·ΈλŸ¬λ‚˜ 아직도 μœ μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ μ‚¬μš©μžλ₯Ό μ œκ³΅ν•˜λ„λ‘ ν•©μ‹œλ‹€.

## μœ μ € λͺ¨λΈ μƒμ„±ν•˜κΈ°

λ¨Όμ € Pydantic μœ μ € λͺ¨λΈμ„ λ§Œλ“€μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

Pydantic을 μ‚¬μš©ν•˜μ—¬ 본문을 μ„ μ–Έν•˜λŠ” 것과 같은 λ°©μ‹μœΌλ‘œ λ‹€λ₯Έ κ³³μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

=== "파이썬 3.7 이상"

```Python hl_lines="5 12-16"
{!> ../../../docs_src/security/tutorial002.py!}
```

=== "파이썬 3.10 이상"

```Python hl_lines="3 10-14"
{!> ../../../docs_src/security/tutorial002_py310.py!}
```

## `get_current_user` μ˜μ‘΄μ„± μƒμ„±ν•˜κΈ°

μ˜μ‘΄μ„± `get_current_user`λ₯Ό λ§Œλ“€μ–΄ λ΄…μ‹œλ‹€.

μ˜μ‘΄μ„±μ΄ ν•˜μœ„ μ˜μ‘΄μ„±μ„ κ°€μ§ˆ 수 μžˆλ‹€λŠ” 것을 κΈ°μ–΅ν•˜μ‹­λ‹ˆκΉŒ?

`get_current_user`λŠ” 이전에 μƒμ„±ν•œ 것과 λ™μΌν•œ `oauth2_scheme`κ³Ό 쒅속성을 κ°–κ²Œ λ©λ‹ˆλ‹€.

이전에 *경둜 λ™μž‘*μ—μ„œ 직접 μˆ˜ν–‰ν–ˆλ˜ 것과 λ™μΌν•˜κ²Œ μƒˆ 쒅속성 `get_current_user`λŠ” ν•˜μœ„ 쒅속성 `oauth2_scheme`μ—μ„œ `str`둜 `token`을 μˆ˜μ‹ ν•©λ‹ˆλ‹€.

=== "파이썬 3.7 이상"

```Python hl_lines="25"
{!> ../../../docs_src/security/tutorial002.py!}
```

=== "파이썬 3.10 이상"

```Python hl_lines="23"
{!> ../../../docs_src/security/tutorial002_py310.py!}
```

## μœ μ € κ°€μ Έμ˜€κΈ°

`get_current_user`λŠ” 토큰을 `str`둜 μ·¨ν•˜κ³  Pydantic `User` λͺ¨λΈμ„ λ°˜ν™˜ν•˜λŠ” μš°λ¦¬κ°€ λ§Œλ“  (κ°€μ§œ) μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

=== "파이썬 3.7 이상"

```Python hl_lines="19-22 26-27"
{!> ../../../docs_src/security/tutorial002.py!}
```

=== "파이썬 3.10 이상"

```Python hl_lines="17-20 24-25"
{!> ../../../docs_src/security/tutorial002_py310.py!}
```

## ν˜„μž¬ μœ μ € μ£Όμž…ν•˜κΈ°

이제 *경둜 μž‘λ™*μ—μ„œ `get_current_user`와 λ™μΌν•œ `Depends`λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

=== "파이썬 3.7 이상"

```Python hl_lines="31"
{!> ../../../docs_src/security/tutorial002.py!}
```

=== "파이썬 3.10 이상"

```Python hl_lines="29"
{!> ../../../docs_src/security/tutorial002_py310.py!}
```

Pydantic λͺ¨λΈμΈ `User`둜 `current_user`의 νƒ€μž…μ„ μ„ μ–Έν•˜λŠ” 것을 μ•Œμ•„μ•Ό ν•©λ‹ˆλ‹€.

이것은 λͺ¨λ“  μ™„λ£Œ 및 νƒ€μž… 검사λ₯Ό 톡해 ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ 우리λ₯Ό λ„μšΈ κ²ƒμž…λ‹ˆλ‹€.

!!! 팁
μš”μ²­ 본문도 Pydantic λͺ¨λΈλ‘œ μ„ μ–Έλœλ‹€λŠ” 것을 κΈ°μ–΅ν•  κ²ƒμž…λ‹ˆλ‹€.

μ—¬κΈ°μ„œ **FastAPI**λŠ” `Depends`λ₯Ό μ‚¬μš©ν•˜κ³  있기 λ•Œλ¬Έμ— ν˜Όλ™λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

!!! 확인
이 μ˜μ‘΄μ„± μ‹œμŠ€ν…œμ΄ μ„€κ³„λœ 방식은 λͺ¨λ‘ `User` λͺ¨λΈμ„ λ°˜ν™˜ν•˜λŠ” λ‹€μ–‘ν•œ μ˜μ‘΄μ„±(λ‹€λ₯Έ "의쑴적인")을 κ°€μ§ˆ 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή νƒ€μž…μ˜ 데이터λ₯Ό λ°˜ν™˜ν•  수 μžˆλŠ” μ˜μ‘΄μ„±μ΄ ν•˜λ‚˜λ§Œ μžˆλŠ” κ²ƒμœΌλ‘œ μ œν•œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

## λ‹€λ₯Έ λͺ¨λΈ

이제 *경둜 μž‘λ™ ν•¨μˆ˜*μ—μ„œ ν˜„μž¬ μ‚¬μš©μžλ₯Ό 직접 κ°€μ Έμ˜¬ 수 있으며 `Depends`λ₯Ό μ‚¬μš©ν•˜μ—¬ **μ˜μ‘΄μ„± μ£Όμž…** μˆ˜μ€€μ—μ„œ λ³΄μ•ˆ λ©”μ»€λ‹ˆμ¦˜μ„ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

그리고 λ³΄μ•ˆ μš”κ΅¬ 사항에 λŒ€ν•œ λͺ¨λ“  λͺ¨λΈ λ˜λŠ” 데이터λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€(이 경우 Pydantic λͺ¨λΈ `User`).

κ·ΈλŸ¬λ‚˜ 일뢀 νŠΉμ • 데이터 λͺ¨λΈ, 클래슀 λ˜λŠ” νƒ€μž…μ„ μ‚¬μš©ν•˜λ„λ‘ μ œν•œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λͺ¨λΈμ— `id`와 `email`이 있고 `username`이 μ—†κΈΈ μ›ν•˜μ‹­λ‹ˆκΉŒ? λ§žμŠ΅λ‹ˆλ‹€. 이듀은 λ™μΌν•œ 도ꡬλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

`str`만 κ°–κ³  μ‹ΆμŠ΅λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ κ·Έλƒ₯ `dict`λ₯Ό κ°–κ³  μ‹ΆμŠ΅λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ λ°μ΄ν„°λ² μ΄μŠ€ 클래슀 λͺ¨λΈ μΈμŠ€ν„΄μŠ€λ₯Ό 직접 κ°–κ³  μ‹ΆμŠ΅λ‹ˆκΉŒ? 그듀은 λͺ¨λ‘ 같은 λ°©μ‹μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

μ‹€μ œλ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ‘œκ·ΈμΈν•˜λŠ” μ‚¬μš©μžκ°€ μ—†μ§€λ§Œ μ•‘μ„ΈμŠ€ ν† ν°λ§Œ μžˆλŠ” λ‘œλ΄‡, 봇 λ˜λŠ” 기타 μ‹œμŠ€ν…œμ΄ μžˆμŠ΅λ‹ˆκΉŒ? λ‹€μ‹œ λ§ν•˜μ§€λ§Œ λͺ¨λ‘ λ™μΌν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ λͺ¨λ“  μ’…λ₯˜μ˜ λͺ¨λΈ, λͺ¨λ“  μ’…λ₯˜μ˜ 클래슀, λͺ¨λ“  μ’…λ₯˜μ˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ‹­μ‹œμ˜€. **FastAPI**λŠ” μ˜μ‘΄μ„± μ£Όμž… μ‹œμŠ€ν…œμ„ λ‹€λ£¨μ—ˆμŠ΅λ‹ˆλ‹€.

## μ½”λ“œ μ‚¬μ΄μ¦ˆ

이 μ˜ˆλŠ” μž₯ν™©ν•΄ 보일 수 μžˆμŠ΅λ‹ˆλ‹€. λ™μΌν•œ νŒŒμΌμ—μ„œ λ³΄μ•ˆ, 데이터 λͺ¨λΈ, μœ ν‹Έλ¦¬ν‹° κΈ°λŠ₯ 및 *경둜 μž‘λ™*을 ν˜Όν•©ν•˜κ³  μžˆμŒμ„ 염두에 λ‘μ‹­μ‹œμ˜€.

κ·ΈλŸ¬λ‚˜ 이게 ν‚€ν¬μΈνŠΈμž…λ‹ˆλ‹€.

λ³΄μ•ˆκ³Ό 쒅속성 μ£Όμž… ν•­λͺ©μ„ ν•œ 번만 μž‘μ„±ν•˜λ©΄ λ©λ‹ˆλ‹€.

그리고 μ›ν•˜λŠ” 만큼 λ³΅μž‘ν•˜κ²Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜λ„ μœ μ—°μ„±κ³Ό ν•¨κ»˜ ν•œ 곳에 ν•œ λ²ˆμ— μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ λ™μΌν•œ λ³΄μ•ˆ μ‹œμŠ€ν…œμ„ μ‚¬μš©ν•˜μ—¬ 수천 개의 μ—”λ“œν¬μΈνŠΈ(*경둜 μž‘λ™*)λ₯Ό κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

그리고 κ·Έλ“€ λͺ¨λ‘(λ˜λŠ” μ›ν•˜λŠ” λΆ€λΆ„)λŠ” μ΄λŸ¬ν•œ μ˜μ‘΄μ„± λ˜λŠ” μƒμ„±ν•œ λ‹€λ₯Έ μ˜μ‘΄μ„±μ„ μž¬μ‚¬μš©ν•˜λŠ” 이점을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

그리고 이 수천 개의 *경둜 μž‘λ™*은 λͺ¨λ‘ 3쀄 μ •λ„λ‘œ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.

=== "파이썬 3.7 이상"

```Python hl_lines="30-32"
{!> ../../../docs_src/security/tutorial002.py!}
```

=== "파이썬 3.10 이상"

```Python hl_lines="28-30"
{!> ../../../docs_src/security/tutorial002_py310.py!}
```

## μš”μ•½

이제 *경둜 μž‘λ™ ν•¨μˆ˜*μ—μ„œ ν˜„μž¬ μ‚¬μš©μžλ₯Ό 직접 κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” 이미 이듀 사이에 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©μž/ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‹€μ œλ‘œ `username`κ³Ό `password`λ₯Ό 보내렀면 *경둜 μž‘λ™*을 μΆ”κ°€ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€.

λ‹€μŒ μž₯을 확인해 λ΄…μ‹œλ‹€.

0 comments on commit 0ec0df5

Please sign in to comment.