用途:该技能用于本地验证过程中按需处理认证。先尝试需要验证的原始 UI 或 API 操作;若匿名成功则继续,不创建认证状态;若因认证失败,则直接在本地 PostgreSQL 的 sessions 表中创建一个短时 owner 会话,复用它完成原操作并收集证据,随后立即删除。
主要能力:创建临时会话、以 Bearer 方式用于 API 验证、以签名 Cookie 方式用于浏览器 UI 验证,以及清理临时会话。
使用方式:使用仓库配置的本地 PG_URL,不要假设容器名或硬编码数据库凭据。生成唯一 session ID 与不含 . 字符的高熵 token,插入最多 15 分钟过期的会话:
WITH target AS ( SELECT r.id, a.provider_id FROM readers AS r JOIN accounts AS a ON a.user_id = r.id WHERE r.role = 'owner' ORDER BY r.created_at LIMIT 1 ) INSERT INTO sessions (id, user_id, token, expires_at, provider) SELECT '<session-id>', id, '<session-token>', now() + interval '15 minutes', provider_id FROM target;
若未选中 owner 账户或插入未恰好创建一行则失败。不要创建或修改 reader、account、密码或 API key。API 验证时发送 Authorization: Bearer <session-token>,由启用的 Better Auth bearer() 插件内部签名并解析数据库会话。浏览器 UI 验证时,用本地 JWT_SECRET 以 HMAC-SHA256 和标准 Base64 输出签名 token,在同一浏览器上下文设置 better-auth.session_token=<token>.<signature>;让浏览器 cookie API 编码,写原始 Cookie 头时先 URL 编码。不要打印 secret、token 或 cookie。重试原受保护操作,不要另加认证测试。本地开发路由没有 /api/v1 前缀。
清理与限制:在 finally 式清理中按 ID 和 token 删除临时行,即使验证失败也要删除。禁止用于 staging、生产、共享数据库或本地归属不确定的数据库。