ChatLogin
ChatLogin 是面向 Python-backed 网站的可复用登录能力包:后端统一处理身份、认证、会话、CSRF、回跳和角色边界;前端可以使用默认模板、覆盖模板/CSS,或保留网站原有 HTML/JS 走 headless JSON API。
文档入口:https://arch.gh.wzhecnu.cn/ChatLogin/
| 场景 | 文档 |
|---|---|
| FastAPI 快速接入 | Python 接口树 |
| 默认 UI、模板覆盖与 headless | 能力地图 |
| CLI 版本和命令树 | CLI 树 |
安装
pip install "ChatLogin[web]"
只需要包内模板渲染、但不使用 FastAPI 时可安装:
pip install "ChatLogin[ui]"
核心包不要求网站采用包内页面。已有静态 HTML/原生 JS 的网站可以只挂载 JSON 路由,继续保留原登录入口和用户数据库;标准库 HTTP 宿主也可以只使用 LoginUI 渲染登录页。
选择认证后端(0.1.4)
| 账户来源 | 可选后端 | 会话与宿主边界 |
|---|---|---|
| 固定账号 / 多个显式账号 | PasswordBackend(accounts) |
一个 / 多个哈希条目;搭配 SessionManager 与所选 store |
| 其他宿主用户库 | CallbackBackend(authenticate) + 宿主 SessionStore |
宿主定义密码验证、schema 和会话映射 |
| 异步上游校验 | AsyncCallbackBackend(authenticate) |
回调在事件循环中 await;非法输入不调用回调,非法结果失败关闭 |
| 已有 ChatVoice 账户/会话 schema | chatlogin.backends.ChatVoiceAuth |
现成兼容后端;固定 chatvoice 命名空间,不建表或迁移 |
ChatVoiceAuth 随核心包提供,按需导入;不依赖 ChatVoice 包或 web extra,不是任意 SQLite 账户系统的通用 ORM。默认 UI、宿主覆盖和 headless 三种模式与后端选择相互独立。账户创建、业务 owner 权限与宿主 HTTP 契约仍由网站负责。见 接入与安全。
设计边界
guest/user/admin是服务端可信身份,角色不能由请求体指定。- 固定账号、多账号和宿主回调均可;已有 PBKDF2 密码材料可验证,不强制迁移。
- 会话 token 只以 SHA-256 摘要持久化,支持 TTL、轮换、撤销、CSRF、实例隔离和公开
SessionManager.purge_expired()清理。 - 公开
PrivateSQLite供依赖包复用;POSIX 上以可信0700数据目录和真实路径mode=rw连接保护主库及 SQLite sidecar,拒绝不安全的已有路径且不 chmod 历史文件。同 UID 进程属于本地文件系统信任边界;非 POSIX 不把 mode bits 误称为 ACL。 - FastAPI adapter 默认同站 Origin/Host 校验、请求体大小限制、限流和安全
next。 ChatLogin[web]声明starlette>=0.40,<2.0;兼容性测试覆盖 Starlette 0.x、1.3.1 和 1.6.0,CI 门禁继续固定 0.x 与 1.3.x 线路。- 默认模板提供色系、布局与浅色/深色/跟随系统选项;宿主可覆盖局部或整页,也可保留原 HTML/JS 走 headless。
- Admin 不自动绕过资源 owner;业务数据授权仍由宿主决定。
- 不提供默认生产密码、独立登录微服务、SSO/OAuth、MFA 或账户管理后台。
开发与验证
python -m pip install -e ".[dev,docs]"
chatlogin --version
chatlogin --tree
chatlogin --tree-brief
python -m pytest -q
python -m build
python -m twine check dist/*
mkdocs build --strict
可运行的 FastAPI 合成账号示例:examples/demo_fastapi.py。
Metadata
Release files for ChatLogin 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| chatlogin-0.1.4.tar.gz | 78.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chatlogin-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 111.0 kB
Release files / chatlogin-0.1.4.tar.gz
| Download URL | chatlogin-0.1.4.tar.gz |
|---|---|
| Size | 78.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3787f507f2a7b7ee80b152555cedb048ac5177fddb3396b9b9c7c519b49761cf
|
|
BLAKE2b-256 checksum How to use checksums |
24ac516ba2def80e18293cee88a68aee22230d1511834ed0f913f13324a2f243
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.
Transparency logRelease files / chatlogin-0.1.4-py3-none-any.whl
| Download URL | chatlogin-0.1.4-py3-none-any.whl |
|---|---|
| Size | 32.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
78a23473d3ee1e9f0e0281de366adb8ce2fe0810f7e88ff4c6c2eb48f925a0cf
|
|
BLAKE2b-256 checksum How to use checksums |
5b18e5f684efa8ebbcee2dff5f472b8f7916f156b7afbc44872ea30bdc4d0ab2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.
Transparency log