认证
使用 Better Auth 签名 Bearer Session 安全共享用户,同时保留 Standalone 认证。
注册、登录、验证、找回、Session 撤销和账户安全等产品行为保持一致;Provider 与传输方式由部署模式决定。
客户端使用 Supabase Auth adapter。Session 所有权与 Provider Token 只存在于该 adapter 内。
客户端调用
/api/auth/*,从 set-auth-token 读取签名 Token,并通过 Authorization: Bearer 发送。每个请求都带已配置的可信 Origin。浏览器使用宿主的安全 Cookie 流程。宿主同时验证原生 Origin 与 Apple/Google audience,但不把客户端框架名当作身份。
Session 规则
- Unified Bearer 只能保存在 Keychain、Keystore 安全存储、SecureStore、Electron 主进程加密存储或 Tauri Rust 私有 Keyring 中。
- 只有安全写入成功后才能替换当前 Token。
- 无效 Session 的
GET /api/auth/get-session返回200 + null;App API 返回401 UNAUTHENTICATED。 - 失效时清理安全 Token、内存 Session、用户缓存、订阅身份和设备绑定,绝不回退 Supabase。
- Better Auth 错误使用
{ code, message };App API 使用版本化错误 Envelope。客户端按错误码分支,不解析文案。
端点与 Payload 契约见 API 契约。
