默认界面
固定账号登录
PasswordBackend两个独立账号与密码哈希,使用默认 LoginUI。
LIVE LOGIN LAB
四种真实后端,每例都有 A/B 用户。身份与会话由 ChatLogin 管理;业务数据由宿主按 user_id / owner_id 校验。
默认界面
PasswordBackend两个独立账号与密码哈希,使用默认 LoginUI。
自定义界面
CallbackBackend本地同步回调 + 完整宿主 renderer。
体验宿主覆盖 →HEADLESS
AsyncCallbackBackend本地异步回调 + 自有 HTML / JS。
体验 Headless →账户库兼容
ChatVoiceAuth在内存账户库里演示 A/B 登录,保留既有 ChatVoice schema。
体验 ChatVoice →CAPABILITY MAP
色板和布局是视觉配置,不是新的认证方式。
PasswordBackendCallbackBackendAsyncCallbackBackendChatVoiceAuth
LoginUI
宿主 template / rendererui=None headless
MemorySessionStoreSQLiteSessionStore
宿主 SessionStore
current_usercsrf_userroles / require_owner
QUICK INTEGRATION
安装 ChatLogin[web] 和宿主 ASGI server;下面的程序只从环境变量读取宿主显式设置的密码,没有默认生产凭据。
"""Minimal host app; provide an explicit password through the environment."""
import os
from urllib.parse import urlsplit
from fastapi import Depends, FastAPI
import uvicorn
from chatlogin import MemorySessionStore, PasswordBackend, Principal, SessionManager, hash_password
from chatlogin.fastapi import CookieSettings, FastAPIAuth
from chatlogin.ui import LoginUI
origin = os.environ.get("MY_SITE_ORIGIN", "http://127.0.0.1:8000")
password = os.environ["MY_SITE_LOGIN_PASSWORD"]
backend = PasswordBackend({
"operator": (Principal("operator", "Operator"), hash_password(password)),
})
app = FastAPI()
auth = FastAPIAuth(
backend,
SessionManager(MemorySessionStore(max_sessions=256), instance="my-site", ttl=3600),
origin=origin,
ui=LoginUI(),
cookie=CookieSettings(secure=urlsplit(origin).scheme == "https"),
)
app.include_router(auth.router)
@app.get("/")
def home():
return {"login": "/auth/?next=/private"}
@app.get("/private")
def private(user=Depends(auth.current_user)):
return user.as_dict()
if __name__ == "__main__":
uvicorn.run(app, host="127.0.0.1", port=8000, proxy_headers=False)
保存为 app.py,显式设置 MY_SITE_LOGIN_PASSWORD 后运行。账号为 operator;打开 /auth/?next=/private 完成登录。完整启动命令和生产边界见快速接入文档。
模板游乐场3 色板 × 2 布局 × 3 外观,复制精确配置。完整接入与安全Headless sequence、同步/异步回调、stores、ChatVoice schema。HONEST BOUNDARIES
它没有默认生产凭据,不读取 ChatEnv profile,不信任 forwarded headers,也不提供 OAuth、SSO、MFA、邮件、短信或扫码登录。生产宿主必须选择自己的后端、持久 store、固定 origin、TLS 与业务授权。