Skip to main content

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_use claim)

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

liteauth-0.1.6-py3-none-any.whl (75.7 kB view details)

Uploaded Python 3

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

Hashes for liteauth-0.1.6.tar.gz
Algorithm Hash digest
SHA256 bea98564693d27885acf33645bcd4441b1c15e4bd9819ed821305ac6a8855a28
MD5 d11ea1b6bb4a0fee740f4dfbbc8cc7ca
BLAKE2b-256 d0f49a8c48683f7ef5ea596827f4f00f7bac0ef6dd11242fd6e8396c520b1aef

See more details on using hashes here.

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

Hashes for liteauth-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 112cefd1a52f49aae1de19dd438acfff7ef2cb887e80cc04ee15806b19e4beab
MD5 3377301257a06a926560de846fbe1049
BLAKE2b-256 a710d03ab77c1cc43bdd88c3934e6df7b7b3bea8eca85c927d4aa5634af3bbf1

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

This release

0.1.6 This release

2 files

0.1.3

2 files

0.1.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page