首页
/ FastAPI 用户管理实战指南

FastAPI 用户管理实战指南

2026-01-17 09:38:19作者:柯茵沙

项目介绍

FastAPI Users 是一个为 FastAPI 设计的开箱即用且可高度定制的用户管理库。它简化了在 FastAPI 应用中实现用户注册、认证和授权的过程。结合 SQLModel 和 SQLite,或者支持其他数据库系统如 MongoDB,FastAPI Users 提供了一整套解决方案,使得开发者能够快速集成用户身份验证功能,而无需从零开始编写认证逻辑。项目采用 Python 编写,灵活的架构允许开发者轻松适配到现有的或新的 FastAPI 工程中。

项目快速启动

环境搭建

首先,确保你的环境已安装好 FastAPI, FastAPI Users, SQLModel 以及 SQLite 相关依赖:

pip install fastapi fastapi-users sqlmodel sqlite3

模型定义与数据库设置

创建数据库模型(这里以 SQLite 为例):

from sqlmodel import create_engine, SQLModel

sqlite_file_name = "database.db"
sqlite_url = f"sqlite:///./{sqlite_file_name}"
engine = create_engine(sqlite_url)

# 数据库表创建
def create_db_and_tables():
    SQLModel.metadata.create_all(engine)

接下来,集成 fastapi-users 到你的 FastAPI 应用中:

from fastapi import FastAPI
from fastapi_users import FastAPIUsers
from fastapi_users.db import SQLModelUserDatabase
from .models import User, UserCreate, UserUpdate, UserDB  # 假设这些是预先定义好的模型

app = FastAPI()

# 用户管理器设置
user_db = SQLModelUserDatabase(UserDB, engine)
fastapi_users = FastAPIUsers[user_db, int](User, UserCreate, UserUpdate, UserDB)

# 注册路由
app.include_router(
    fastapi_users.get_auth_router+jwt_authentication,
    prefix="/auth/jwt",
    tags=["auth"],
)
app.include_router(
    fastapi_users.get_register_router(UserCreate),
    prefix="/auth/register",
    tags=["auth"],
)

请注意,你需要替换模型导入路径以及可能需要处理的 JWT 认证配置。

应用案例和最佳实践

在实际开发中,最佳实践包括:

  • 权限控制:利用 FastAPI Users 的角色管理系统来对不同用户分配不同权限。
  • 会话管理:结合 JWT 或者其他会话管理技术,提供安全的访问控制。
  • 密码安全策略:实施强密码规则和安全的密码哈希算法,比如 bcrypt。
  • 邮箱验证:通过发送验证邮件增加账户的安全性,可以使用第三方服务如 SendGrid 来实现。

示例代码片段

对于权限控制,你可以这样添加角色并保护特定端点:

from fastapi_users.permissions import Permissions, Role

# 定义角色
ROLE_ADMIN = Role(name="admin")
ROLE_USER = Role(name="user")

@fastapi_users.permission_handler()
async def permission_handler(user: User):
    if user.role == ROLE_ADMIN.name:
        return Permissions.ALL_PERMISSIONS
    else:
        return Permissions.MANAGE_OWN_ITEM

@app.get("/admin_area", dependencies=[Depends(is_admin)])
async def admin_area():
    return {"detail": "Welcome to the admin area"}

典型生态项目

FastAPI Users 因其灵活性,常与其他生态组件配合使用,如:

  • 数据库适配器:除了 SQLite,还有 MongoDB、PostgreSQL 等数据库的适配方案。
  • 认证后端:支持 JWT、Cookie、Session 等多种认证方式。
  • OAuth2:可以整合 Google、GitHub 等OAuth2提供商进行社交登录。
  • 前端框架集成:与 Vue.js、React等前端框架搭配使用,构建全栈应用。

通过上述组件的灵活组合,FastAPI Users 成为了构建安全、高效Web应用的强大工具箱。记得查阅项目的官方文档以获取最新的特性和实践指导。

登录后查看全文

项目优选

收起
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
471
465
kernelkernel
deepin linux kernel
C
32
16
atomcodeatomcode
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get Started
Rust
2.09 K
218
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
700
1.4 K
docsdocs
暂无描述
Dockerfile
780
5.08 K
pytorchpytorch
Ascend Extension for PyTorch
Python
758
968
flutter_flutterflutter_flutter
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.04 K
271
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
880
2.03 K
mindquantummindquantum
MindQuantum is a general software library supporting the development of applications for quantum computation.
Python
183
111
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.11 K
682