用途:Epicenter Auth 是 Epicenter 应用的认证层,基于 Better Auth 作为认证服务器与会话引擎,不替换其服务端会话模型。它通过插件与选项扩展,提供 OAuth 应用/资源边界和身份状态,供 Web、扩展、Tauri 等跨源或原生客户端使用。
主要能力:提供框架无关核心 @epicenter/auth,负责持久化认证记录、刷新、刷新令牌撤销、/api/session 验证、网络门控、带认证的 fetch 与 WebSocket 打开;提供 Svelte 适配器 @epicenter/auth/svelte,通过 fromAuth(authClient) 将 auth.state 和 connection.status 变为响应式,并导出 reloadOnAuthChange。客户端契约包含 state、connection、onStateChange、startSignIn、signOut、fetch、getProfile、openWebSocket 与 Symbol.dispose。AuthState 状态为 signed-out、signed-in、reauth-required,均携带 principalId(无 ownerId)。
使用方式:托管 OAuth 默认使用 createOAuthAppAuth({ baseURL, clientId, launcher, persistedAuthStorage }),或用 createHostedBrowserRedirectAuth 封装常见约定;自托管用 createInstanceTokenAuth,同源面板用 createSameOriginCookieAuth。调用 auth.startSignIn() 启动登录,完成信号应观察 auth.state.status === 'signed-in'。HTTP 请求用 auth.fetch,WebSocket 用 auth.openWebSocket。持久化存储实现 PersistedAuthStorage 端口,可配合 createWebStoragePersistedAuthStorage 或 loadPersistedAuthStorage。
限制:本地邮箱/密码已禁用以避免账户关联风险;仅 Google 为受信任关联提供方。离线时网络访问失败关闭,但本地工作区可凭缓存 principalId 继续启动。只有自托管令牌客户端的 connection.status 为实时状态,托管 OAuth 与同源 Cookie 客户端仅报告常量 connected。源码中要求变更前对照本地类型与官方文档验证 Better Auth 行为。