使用 Authentication Skill

认证插件随包带了一份 Skill。插件注册到应用时它会同步到 .agents/skills/nocobase-app-plugin-authentication/,Agent 在处理登录、会话、当前用户、认证方式这类需求时会自动读它。目录不在或看起来过期,在应用根目录运行:

pnpm nocobase skills sync

这个目录是同步生成的,下次同步会整体覆盖,不要手改。

有了 Skill,Agent 会替你做什么

  • 知道哪些是插件的接口、哪些是你应用里的文件,改动落在正确的地方;
  • 给接口和页面加上正确的认证策略,并且把认证和权限分开处理;
  • 改你自己的登录页面、表单和品牌,不会绕过它们另写一套;
  • 接新认证方式时先找 Better Auth 现成的 provider 或插件,实在没有才写自定义插件;
  • 对照 Better Auth 文档把新认证方式要的表写成应用 migration;
  • 从服务端代码禁用账号、重置密码、踢掉会话;
  • 检查密钥、公网地址、Cookie、多实例缓存这些上线配置;
  • 交付前按固定清单自查:未登录 401、无权限 403、禁用账号立即失效、新方式的成功与失败路径。

它不会替你做的:决定账号策略、决定要不要开放注册、替你从身份平台拿凭据。这些是你的事。

怎么说

像跟同事交代一样,说清楚要什么效果,不用管实现。以下几个例子可以直接改了用。

接口要登录才能调

/api/orders 现在谁都能调,改成登录后才能访问,没登录返回 401。订单谁能看哪些,之后用权限做,这次不动。补上匿名和已登录两种情况的测试。

换品牌

登录页换我们的 logo,浅色深色各一张放在 public/assets/ 了。标题改成「欢迎回到 CRM」,右边宣传区换成三条产品介绍。表单逻辑别动。

加 GitHub 登录

加 GitHub 登录,用 Better Auth 现成的 provider,别自定义。首次登录可以自动建账号,但同邮箱的已有账号不要自动合并。做完告诉我要配哪些环境变量、回调地址填什么。

接公司 SSO

公司用 Keycloak,让员工用公司账号登录。绑定用 issuer 加 subject,不允许首次登录自动建号,账号由管理员先建好再绑。先说说你打算用哪种机制、我要在 Keycloak 里登记什么,再动手。

离职自动禁用

人事系统在员工离职时会调我们一个接口,按邮箱把账号禁用并踢掉已有会话。这个接口自己要有认证和权限检查。

交付时看什么

Agent 报告里应该能看到这些,看不到就问:

  • 改了哪些文件,有没有碰插件包;
  • 用了 Better Auth 的哪种机制,为什么不用更简单的;
  • 新认证方式拿什么做稳定标识,有没有按邮箱合并账号;
  • 有没有加 migration,字段是不是对照了 Better Auth 插件文档;
  • 密钥是不是只在服务端;日志里会不会出现密码、token、ticket;
  • 实际跑了哪些测试、typecheck 和构建,结果如何;
  • 上线要你提供的环境变量、回调地址,以及还有什么没覆盖到。

「代码看起来没问题」不算验证。

常见问题

Agent 自己写了一套登录接口。 让它改用 Better Auth 的机制。所有 Better Auth 端点都已经挂在 /api/auth/* 下,自定义登录也应该是 Better Auth 插件,最终创建的是 Better Auth 会话。否则守卫、退出、禁用都不会生效。

Agent 说不用加表,怎么确认? 社交登录和 OAuth、OIDC 复用已有的 account 表,确实不用。换成别的 Better Auth 插件,让它指出文档里的 schema 段落,逐项说明每个 model 和字段是否已经在应用 migration 里建了。

登录了接口还是 401。 先看接口是否真的加了认证中间件,再看是不是部署在子路径下、公网地址和 Cookie path 有没有配。让 Agent 按上线检查清单逐项核对。