liteauth
Python 异步权限认证框架,受 Sa-Token 启发。
支持多账号体系、JWT(Simple / Mixin / Stateless)、OAuth2 服务端、SSO、Session 管理、角色/权限校验、踢人/顶号/封禁等能力。
设计原则
- Core 无框架依赖 — 核心认证逻辑与 FastAPI / Flask / Django 解耦
- Async first — 全异步设计,原生适配 FastAPI / Starlette
- 多账号体系 — 一个系统多套用户表(
user/admin/merchant),各自独立认证 - 可插拔存储 — Memory / Redis 自由切换,也可实现自定义 Store
- JWT 可选 — 三种模式(Simple / Mixin / Stateless)按需选用
快速开始
from liteauth import SaManager
from liteauth.core.config import SaTokenConfig
from liteauth.store.memory import MemoryStore
sa = SaManager()
sa.init(config=SaTokenConfig(), store=MemoryStore())
user_auth = sa.create_logic("user")
token = await user_auth.login("10001")
login_id = await user_auth.get_login_id_by_token(token) # "10001"
FastAPI 集成
from fastapi import FastAPI, Depends
from liteauth.integration.fastapi.dependency import require_login, require_role
app = FastAPI()
sa.init_app(app)
@app.get("/me", dependencies=[Depends(require_login("user"))])
async def me():
return {"msg": "已登录"}
@app.get("/admin", dependencies=[Depends(require_role("admin", auth="user"))])
async def admin():
return {"msg": "管理员"}
路由中间件方式
from liteauth.core.router import SaRouter
from liteauth.integration.fastapi.middleware import SaRouterMiddleware
router = SaRouter()
router.match("/api/admin/**").check(lambda ctx: admin_auth.check_login(ctx))
app.add_middleware(SaRouterMiddleware, sa_router=router)
安装
pip install liteauth
# 带 FastAPI 集成
pip install liteauth[fastapi]
# 带 Redis 存储
pip install liteauth[redis]
# 全量
pip install liteauth[all]
项目结构
liteauth/
├── core/ # 核心认证逻辑(无框架依赖)
│ ├── logic.py # AuthLogic — 认证逻辑实现
│ ├── config.py # SaTokenConfig — 全局配置
│ ├── session.py # SaSession — 会话管理
│ ├── router.py # SaRouter — 路由鉴权器
│ └── ...
├── store/ # 存储层抽象
│ ├── base.py # Store 协议
│ ├── memory.py # MemoryStore
│ └── redis.py # RedisStore
├── integration/ # Web 框架集成
│ └── fastapi/ # FastAPI Depends / Middleware
├── plugin/ # 插件
│ ├── jwt/ # JWT Simple / Mixin / Stateless
│ ├── oauth2/ # OAuth2 服务端
│ └── sso/ # SSO 单点登录
├── strategy/ # 可替换策略
│ ├── key_builder.py # Redis key 命名规则
│ └── token.py # Token 生成策略
└── manager.py # SaManager 全局管理器
许可证
Apache-2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
liteauth-0.1.3.tar.gz
(7.1 MB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
liteauth-0.1.3-py3-none-any.whl
(68.9 kB
view details)
File details
Details for the file liteauth-0.1.3.tar.gz.
File metadata
- Download URL: liteauth-0.1.3.tar.gz
- Upload date:
- Size: 7.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e59bcc39e287814beb2e342be74ccf3177c4844d7eddb6e02afaa5808c7417dd
|
|
| MD5 |
4f19630bd54da7e191f8fa18bcf88317
|
|
| BLAKE2b-256 |
4b91680bac038a051f350b170819dcc88ab55b61910b96edb180f89be40951af
|
File details
Details for the file liteauth-0.1.3-py3-none-any.whl.
File metadata
- Download URL: liteauth-0.1.3-py3-none-any.whl
- Upload date:
- Size: 68.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1358d0cd16c335702e3866e612cf750e86689423bfa2f486f9e9c4f6966390f
|
|
| MD5 |
aedccc8b3cb2962f5429084481a43fcf
|
|
| BLAKE2b-256 |
471713603eb62d8590e25ad0af0348a40b9c70d5f6ab06021028d713794a756f
|