FastAPI에서 인증 및 승인을 위해 JWT 토큰을 사용하는 방법
소개:
웹 애플리케이션이 개발되면서 사용자 인증 및 승인이 중요한 부분이 되었습니다. JWT(JSON Web Token) 토큰을 사용하여 인증 및 권한 부여 기능을 쉽게 구현할 수 있습니다. FastAPI는 인증 및 권한 부여를 처리하기 위해 간단하고 사용하기 쉬운 기능을 제공하는 최신 Python 기반 웹 프레임워크입니다. 이 기사에서는 FastAPI에서 인증 및 승인을 위해 JWT 토큰을 사용하는 방법을 설명합니다.
- 종속 라이브러리 설치
먼저 FastAPI, PyJWT 및 Passlib를 포함한 일부 종속 라이브러리를 설치해야 합니다. pip 명령을 사용하여 설치할 수 있습니다:
pip install fastapi pip install pyjwt pip install passlib
- 비밀 키 생성
JWT 토큰 서명 및 확인을 위해 비밀 키를 생성해야 합니다. 비밀 키는 다음 코드를 사용하여 생성할 수 있습니다.
import secrets secret_key = secrets.token_urlsafe(32)
- Create User Model
FastAPI에서는 애플리케이션에서 사용자를 나타내기 위해 사용자 모델을 정의해야 합니다. 다음 코드를 사용하여 사용자 모델을 생성할 수 있습니다.
from pydantic import BaseModel class User(BaseModel): username: str password: str
- 라우팅 및 처리 기능 생성
다음으로 사용자의 인증 및 승인 요청을 처리하기 위한 라우팅 및 처리 기능을 생성해야 합니다. 라우팅 및 처리 기능은 다음 코드를 사용하여 생성할 수 있습니다.
from fastapi import FastAPI, HTTPException from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials from passlib.context import CryptContext from datetime import datetime, timedelta import jwt app = FastAPI() pwd_context = CryptContext(schemes=["bcrypt"]) security = HTTPBearer() # 模拟数据库中的用户 users_db = { "admin": { "username": "admin", "password": pwd_context.hash("admin123") } } @app.post("/login") def login(user: User): if user.username not in users_db: raise HTTPException(status_code=401, detail="Invalid username") stored_user = users_db[user.username] if not pwd_context.verify(user.password, stored_user["password"]): raise HTTPException(status_code=401, detail="Invalid password") token = generate_token(user.username) return {"access_token": token} def generate_token(username: str) -> str: expiration = datetime.utcnow() + timedelta(minutes=30) payload = {"username": username, "exp": expiration} return jwt.encode(payload, secret_key, algorithm="HS256") @app.get("/users/me") def get_user_profile(credentials: HTTPAuthorizationCredentials = security): token = credentials.credentials try: payload = jwt.decode(token, secret_key, algorithms=["HS256"]) username = payload["username"] if username not in users_db: raise HTTPException(status_code=401, detail="Invalid username") return {"username": username} except jwt.DecodeError: raise HTTPException(status_code=401, detail="Invalid token")
- 함수 테스트
이제 Postman 또는 기타 HTTP 클라이언트 도구를 사용하여 기능을 테스트할 수 있습니다. 먼저 POST 요청을 사용하여 로그인 요청을 보내고 요청 본문에 사용자 이름과 비밀번호를 포함해야 합니다. 아래와 같이
요청 URL: http://localhost:8000/login
요청 본문:
{ "username": "admin", "password": "admin123" }
로그인에 성공하면 액세스 토큰이 포함된 응답을 받게 됩니다. 예:
{ "access_token": "xxxxxxxxxxxxx" }
그런 다음 GET 요청을 사용하여 사용자 프로필을 가져오는 요청을 보내고 Authorization 헤더의 Bearer 토큰으로 액세스 토큰을 보낼 수 있습니다. 아래와 같이:
요청 URL: http://localhost:8000/users/me
요청 헤더: 승인: Bearer xxxxxxxxxxxxx
토큰 확인에 성공하면 응답은 사용자 이름이 포함된 JSON 개체를 반환합니다. 예:
{ "username": "admin" }
결론:
이 문서에서는 FastAPI에서 인증 및 승인을 위해 JWT 토큰을 사용하는 방법을 설명합니다. PyJWT 라이브러리를 사용하여 JWT 토큰을 생성하고 비밀번호 해시 확인을 위해 Passlib 라이브러리를 사용했습니다. 이 접근 방식을 사용하면 사용자 인증 및 권한 부여 기능을 쉽게 구현하여 웹 애플리케이션을 보호할 수 있습니다.
위 내용은 FastAPI에서 인증 및 승인을 위해 JWT 토큰을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

PythonlistsCanstoreAnyDatAtype, ArrayModuLearRaysStoreOneType 및 NUMPYARRAYSAREFORNUMERICALPUTATION.1) LISTSAREVERSATILEBUTLESSMEMORY-EFFICENT.2) ARRAYMODUERRAYRAYRAYSARRYSARESARESARESARESARESARESAREDOREDORY-UNFICEDONOUNEOUSDATA.3) NumpyArraysUraysOrcepperperperperperperperperperperperperperperperferperferperferferpercient

whenyouattempttoreavalueofthewrongdatatypeinapythonaphonarray, thisiSdueTotheArrayModule의 stricttyPeenforcement, theAllElementStobeofthesAmetypecified bythetypecode.forperformancersassion, arraysaremoreficats the thraysaremoreficats thetheperfication the thraysaremorefications는

Pythonlistsarepartoftsandardlardlibrary, whileraysarenot.listsarebuilt-in, 다재다능하고, 수집 할 수있는 반면, arraysarreprovidedByTearRaymoduledlesscommonlyusedDuetolimitedFunctionality.

thescriptIsrunningwithHongpyThonversionDueCorRectDefaultTerpretersEttings.tofixThis : 1) checktheDefaultPyThonVersionUsingPyThon-VersionorPyThon3- version.2) usvirtual-ErondmentsBythePython.9-Mvenvmyenv, 활성화, 및 파괴

PythonArraysSupportVariousOperations : 1) SlicingExtractsSubsets, 2) 추가/확장 어드먼트, 3) 삽입 값 삽입 ATSpecificPositions, 4) retingdeletesElements, 5) 분류/ReversingChangesOrder 및 6) ListsompectionScreateNewListSbasedOnsistin

NumpyArraysareSentialplosplicationSefficationSefficientNumericalcomputationsanddatamanipulation. Theyarcrucialindatascience, MachineLearning, Physics, Engineering 및 Financeduetotheiribility에 대한 handlarge-scaledataefficivally. forexample, Infinancialanyaly

UseanArray.ArrayOveralistInpyThonWhendealingwithhomogeneousData, Performance-CriticalCode, OrinterFacingwithCcode.1) HomogeneousData : ArraysSaveMemorywithtypepletement.2) Performance-CriticalCode : arraysofferbetterporcomanceFornumericalOperations.3) Interf

아니요, NOTALLLISTOPERATIONARESUPPORTEDBYARRARES, andVICEVERSA.1) ArraySDONOTSUPPORTDYNAMICOPERATIONSLIKEPENDORINSERTWITHUTRESIGING, WHITHIMPACTSPERFORMANCE.2) ListSDONOTEECONSTANTTIMECOMPLEXITEFORDITITICCESSLIKEARRAYSDO.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

드림위버 CS6
시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Dreamweaver Mac版
시각적 웹 개발 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!
