--login / --logout / --whoami 标志形式仍作为别名受支持,以保持向后兼容性。
身份验证为可选功能。无论您是否登录,策略、仪表板、/audit 页面及所有其他本地功能的运行方式完全相同。登录功能的存在是为了让需要稳定身份的功能(目前是重新审计提醒,未来还会有更多)有所依托。
登录流程
~/.failproofai/auth.json(权限为 0600)中写入会话信息。此后该会话将在应用内仪表板中可见——在 /audit 页面点击 [ set a reminder ] 时,系统将识别您为已登录状态。
仪表板还在 /audit 页面以模态对话框的形式提供相同的登录流程,供从未使用过 CLI 的用户使用。
登出
~/.failproofai/auth.json。如果无法连接到 API 服务器,无论如何都会删除本地文件——本地的登出意图始终优先。
身份验证
<email> (<user uuid>) 并以退出码 0 退出;否则打印 not signed in 并以退出码 1 退出。如果访问令牌距离过期不足一分钟,将在后台静默刷新。
持久化重新审计提醒
当您在/audit 页面点击 [ set a reminder ](或通过该按钮触发的模态框登录)时,仪表板会在 ~/.failproofai/next-audit.json 写入一个小型配套文件:
auth.json 一样,以 0600 权限创建。
仪表板的 /api/auth/reminder 接口提供 GET(读取)、POST(设置/重新调度)和 DELETE(清除)方法,并需要有效会话。
~/.failproofai/auth.json 的内容
0600 权限创建(仅所有者可读写)。访问令牌为有效期 1 小时的 HS256 JWT;刷新令牌为不透明的 256 位随机字符串,服务器以 SHA-256(token) 的形式存储。服务器端会检测刷新令牌的重放攻击,一旦检测到将吊销该用户的所有会话。
环境变量
| 变量 | 默认值 | 用途 |
|---|---|---|
FAILPROOF_API_URL | https://api.befailproof.ai | 覆盖 API 服务器的基础 URL。适用于针对自托管 API 服务器进行本地开发。 |
FAILPROOFAI_AUTH_DIR | ~/.failproofai | 覆盖 auth.json 的存储位置。主要用于测试。 |
故障排查
“Could not reach the api-server” — CLI 无法与FAILPROOF_API_URL 建立 TCP 连接。请检查您的网络连接,或在运行自托管 API 服务器时设置 FAILPROOF_API_URL。
“Rate limited” — 在 15 分钟窗口内,该邮箱(5 次/邮箱)或 IP(20 次/IP)的登录尝试次数过多,或在同一邮箱上次请求后 30 秒内重新发送。错误消息中包含以秒为单位的重试等待时间。
验证码被拒绝 — OTP 错误、已过期,或该记录达到 5 次错误猜测的锁定上限。请重新运行 failproofai auth login 以请求新的验证码。
