fastapi-jwt-auth 是用于在 FastAPI 应用程序中实现 JSON Web Token(JWT)认证的库。它提供了一种简单而灵活的方式来处理用户身份验证,允许开发者轻松地保护 API 路由。此模块旨在与 FastAPI 一起使用,适用于 Python 3.7 及更高版本。
应用场景fastapi-jwt-auth 的主要用途是在构建 RESTful API 时提供安全认证机制。它常用于以下场景:
用户注册与登录:使用 JWT 实现用户身份认证,确保用户的安全性。 受保护的 API:通过 JWT 验证用户的身份,限制未授权用户访问敏感数据。 单点登录(SSO):配合其他服务提供无缝的用户认证体验。 安装说明fastapi-jwt-auth 不是 Python 的默认模块,需要通过 pip 安装。您可以通过以下命令安装:
1 pip install fastapi-jwt-auth
用法举例 示例 1: 用户注册与登录1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 from fastapi import FastAPI, Dependsfrom fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestFormfrom fastapi_jwt_auth import AuthJWTfrom pydantic import BaseModelapp = FastAPI() class Settings (BaseModel ): authjwt_secret_key: str = "your_secret_key" @AuthJWT.load_config def get_config (): return Settings() class User (BaseModel ): username: str password: str fake_users_db = {} @app.post('/register' ) def register (user: User ): fake_users_db[user.username] = user.password return {"msg" : "User registered successfully" } @app.post('/login' ) def login (form_data: OAuth2PasswordRequestForm = Depends( ) ): if form_data.username not in fake_users_db or fake_users_db[form_data.username] != form_data.password: return {"msg" : "Invalid credentials" } access_token = AuthJWT.create_access_token(subject=form_data.username) return {"access_token" : access_token, "token_type" : "bearer" }
示例 2: 受保护的 API1 2 3 4 5 6 7 8 from fastapi import HTTPException@app.get('/protected' ) def protected (Authorize: AuthJWT = Depends( ) ): Authorize.jwt_required() current_user = Authorize.get_jwt_subject() return {"msg" : f"Welcome {current_user} !" }
示例 3: 令牌刷新1 2 3 4 5 6 7 @app.post('/refresh' ) def refresh (Authorize: AuthJWT = Depends( ) ): Authorize.jwt_refresh_token_required() current_user = Authorize.get_jwt_subject() new_access_token = Authorize.create_access_token(subject=current_user) return {"access_token" : new_access_token, "token_type" : "bearer" }
通过以上示例,我们看到了如何使用 fastapi-jwt-auth 模块来实现用户注册、登录、保护 API 接口及刷新令牌等功能。这些功能为开发安全的 FastAPI 应用提供了强大支持。
强烈建议大家关注本人的博客全糖冲击博客 ,我的博客里包含了所有 Python 标准库的使用教程,方便您查询和学习。这不仅能够帮您快速掌握不同模块的使用方法,还可以了解最新的编程趋势。关注我的博客,您将获得丰富的学习资源,提升自己的编程技能,共同在编程的道路上前进!