FastAPI-Authz 项目教程
1. 项目的目录结构及介绍
FastAPI-Authz 项目的目录结构如下:
fastapi-authz/
├── examples/
│ └── ...
├── fastapi_authz/
│ ├── __init__.py
│ ├── casbin_middleware.py
│ └── ...
├── tests/
│ └── ...
├── .gitignore
├── .releaserc.json
├── CHANGELOG.md
├── LICENSE
├── README.md
├── dev-requirements.in
├── dev-requirements.txt
├── requirements.in
├── requirements.txt
├── setup.cfg
└── setup.py
目录结构介绍
examples/
: 包含示例代码,展示如何使用 FastAPI-Authz 中间件。fastapi_authz/
: 核心代码目录,包含中间件的实现文件。__init__.py
: 模块初始化文件。casbin_middleware.py
: Casbin 中间件的实现文件。
tests/
: 包含项目的单元测试文件。.gitignore
: Git 忽略文件配置。.releaserc.json
: 发布配置文件。CHANGELOG.md
: 项目变更日志。LICENSE
: 项目许可证。README.md
: 项目说明文档。dev-requirements.in
和dev-requirements.txt
: 开发依赖配置文件。requirements.in
和requirements.txt
: 项目依赖配置文件。setup.cfg
和setup.py
: 项目打包和安装配置文件。
2. 项目的启动文件介绍
FastAPI-Authz 项目的启动文件通常位于 examples/
目录下,例如 examples/basic_example.py
。以下是一个示例启动文件的内容:
from fastapi import FastAPI
from fastapi_authz import CasbinMiddleware
from starlette.middleware.authentication import AuthenticationMiddleware
from starlette.authentication import BasicAuth
app = FastAPI()
# 添加 Casbin 中间件
app.add_middleware(CasbinMiddleware, enforcer=enforcer)
# 添加基本认证中间件
app.add_middleware(AuthenticationMiddleware, backend=BasicAuth())
@app.get("/")
def read_root():
return {"message": "Hello World"}
启动文件介绍
from fastapi import FastAPI
: 导入 FastAPI 类,用于创建 FastAPI 应用实例。from fastapi_authz import CasbinMiddleware
: 导入 Casbin 中间件。from starlette.middleware.authentication import AuthenticationMiddleware
: 导入认证中间件。from starlette.authentication import BasicAuth
: 导入基本认证后端。app = FastAPI()
: 创建 FastAPI 应用实例。app.add_middleware(CasbinMiddleware, enforcer=enforcer)
: 添加 Casbin 中间件,enforcer
是 Casbin 的执行器实例。app.add_middleware(AuthenticationMiddleware, backend=BasicAuth())
: 添加基本认证中间件。@app.get("/")
: 定义一个简单的路由,返回 "Hello World" 消息。
3. 项目的配置文件介绍
FastAPI-Authz 项目的配置文件主要包括 setup.cfg
和 setup.py
,以及依赖配置文件 requirements.in
和 requirements.txt
。
setup.cfg
setup.cfg
文件包含了项目的打包和安装配置,例如:
[metadata]
name = fastapi-authz
version = 0.1.0
description = An authorization middleware for FastAPI based on PyCasbin
author = Your Name
author_email = your.email@example.com
url = https://github.com/pycasbin/fastapi-authz
license = Apache-2.0
[options]
packages = find:
install_requires =
fastapi
pycasbin
[options.packages.find]
where = .
setup.py
setup.py
文件用于项目的打包和分发,例如:
from setuptools import setup, find_packages
setup(
name="fastapi-authz",