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")
pair = await user_auth.login("10001")
token = pair.access_token # 统一 TokenPair(基础模式 refresh_token 为 None)
login_id = await user_auth.get_login_id_by_token(token) # "10001"
JWT Stateless 双 Token(access + refresh)
Stateless 模式完全无状态(不依赖任何 Store),登录返回 TokenPair:
from liteauth.plugin.jwt import JwtConfig, JwtMode, JwtStatelessAuthLogic
from liteauth.core.config import SaTokenConfig
auth = JwtStatelessAuthLogic(
login_type="user",
config=SaTokenConfig(),
jwt_config=JwtConfig(
mode=JwtMode.STATELESS,
secret_key="your-secret",
jwt_access_token_timeout=3600, # access 短效(秒)
jwt_refresh_token_timeout=604800, # refresh 有限(秒)
enable_refresh_token=True, # False 时只签发 access
),
)
# 登录 → TokenPair(access_token, refresh_token, token_type, expires_in, ...)
pair = await auth.login("10001")
login_id = await auth.get_login_id_by_token(pair.access_token) # "10001"
# 刷新 → 新 token 对(纯无状态,不依赖存储)
new_pair = await auth.refresh(pair.refresh_token)
安全模型说明(纯无状态取舍):
- access 泄漏危害窗口 =
jwt_access_token_timeout(短) - refresh 泄漏危害窗口 =
jwt_refresh_token_timeout(有限) - 不依赖存储 ⇒ 无法作废旧 token / 检测重放,
logout仅清客户端缓存 get_login_id_by_token会拒绝 refresh token(校验token_useclaim)
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.6.tar.gz
(194.2 kB
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.6-py3-none-any.whl
(75.7 kB
view details)
File details
Details for the file liteauth-0.1.6.tar.gz.
File metadata
- Download URL: liteauth-0.1.6.tar.gz
- Upload date:
- Size: 194.2 kB
- 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 |
bea98564693d27885acf33645bcd4441b1c15e4bd9819ed821305ac6a8855a28
|
|
| MD5 |
d11ea1b6bb4a0fee740f4dfbbc8cc7ca
|
|
| BLAKE2b-256 |
d0f49a8c48683f7ef5ea596827f4f00f7bac0ef6dd11242fd6e8396c520b1aef
|
File details
Details for the file liteauth-0.1.6-py3-none-any.whl.
File metadata
- Download URL: liteauth-0.1.6-py3-none-any.whl
- Upload date:
- Size: 75.7 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 |
112cefd1a52f49aae1de19dd438acfff7ef2cb887e80cc04ee15806b19e4beab
|
|
| MD5 |
3377301257a06a926560de846fbe1049
|
|
| BLAKE2b-256 |
a710d03ab77c1cc43bdd88c3934e6df7b7b3bea8eca85c927d4aa5634af3bbf1
|