Skip to content
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🌐 Add Korean translation for docs/ko/docs/tutorial/security/get-current-user.md #5737

Merged
merged 5 commits into from Jan 23, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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`를 보내려면 *경로 작동*을 추가하기만 하면 됩니다.

다음 장을 확인해 봅시다.