B

two-factor-authentication-best-practices

作者 better-auth

面向 Better Auth 的 two-factor-authentication-best-practices:安装 twoFactor 插件,添加客户端重定向,运行迁移并验证 schema,实施 TOTP、backup codes、trusted devices 与 2FA sign-in flow,以满足 Access Control 场景需求。

Stars163
收藏0
评论0
收录时间2026年3月30日
分类访问控制
安装命令
npx skills add https://github.com/better-auth/skills --skill twofactor
编辑评分

该技能评分为 78/100,说明它是一个较扎实的目录收录候选:对于 Better Auth 相关需求,智能体可以获得明确的触发场景、具体的配置步骤,以及可直接参考的 API 示例,无需从泛化的 MFA 提示开始摸索即可实现 2FA。之所以未达到顶级水平,是因为仓库证据显示其文档主要集中在单个 `SKILL.md` 中,缺少安装元数据、规则说明,以及更完整的工作流或约束指引等辅助材料。

78/100
亮点
  • 触发相关性强:描述明确面向 Better Auth 中的 MFA/2FA 场景,覆盖 TOTP、OTP、backup codes、trusted devices 和 sign-in flow。
  • 配置步骤具备实操价值:清楚列出所需的服务端与客户端插件、迁移步骤,以及对 `twoFactorSecret` 列的具体验证检查。
  • 实现参考价值高:代码示例涵盖服务端配置、客户端配置、重定向处理,以及如何结合返回的 `totpURI` 和 backup codes 启用 2FA。
注意点
  • 支持深度主要局限于单个 markdown 文件,缺少脚本、参考资料或安装命令,因此智能体在执行时仍可能需要自行推断部分细节。
  • 结构信号表明其对显式工作流和约束条件的覆盖较弱,某些边界情况及步骤先后关系可能不够清晰。
概览

two-factor-authentication-best-practices skill 概览

two-factor-authentication-best-practices skill 是一份围绕 Better Auth 接入 2FA 的专项实现指南,不是泛泛而谈的 MFA 科普。它最适合已经在用 Better Auth、现在需要可直接落地、尽量少靠猜测的开发者:例如接入 TOTP 应用、OTP 发送、备用恢复码、受信任设备处理,以及通过 twoFactor plugin 改造登录流程。

这个 skill 能帮你完成什么

当你的真实目标是:在 Better Auth 里为 Access Control 上线一套安全、可用的 2FA 流程时,就该用这个 skill。它会帮助你完成插件安装、服务端与客户端接线、执行 migration,并把用户从启用设置、验证到恢复流程这整条链路串起来。

最适合哪些用户

这个 skill 特别适合:

  • 需要在现有应用中为 Better Auth 增加 MFA 的用户
  • 需要实操型 two-factor-authentication-best-practices,而不是理论解释的团队
  • 先做 TOTP 登录加固,再补备用恢复码或邮件/SMS OTP 等兜底路径的开发者

它和普通 prompt 的区别在哪里

普通 prompt 可能只会解释 MFA 的概念;而这个 skill 在你需要 Better Auth 专属实现细节时更有用,比如:

  • twoFactor() 完成服务端插件配置
  • twoFactorClient() 完成客户端插件配置
  • migration 与 schema 校验
  • 启用流程的行为细节,包括 2FA 何时才算真正启用
  • 登录过程中的重定向处理

安装前要先知道什么

这个 skill 的定位本来就很聚焦。它默认你的技术栈里已经有 Better Auth。若你需要的是厂商无关的认证架构设计、合规政策撰写,或 MFA 产品对比,那么它并不是合适的起点。

如何使用 two-factor-authentication-best-practices skill

这个 skill 的安装上下文

这个 skill 位于 better-auth/skills 仓库中的 better-auth/twoFactor。从仓库信息看,目前只有一个 SKILL.md 文件,没有配套 helper script 或其他引用文件,因此它的价值主要来自直接的实现指导,而不是自动化能力。

如果你的环境支持 skill loader,就从仓库安装并指定 twoFactor 这个 skill。若你是手动查看,请直接打开:

  • better-auth/twoFactor/SKILL.md

先读这个文件

在动应用代码之前,先读 SKILL.md。对这个 skill 来说,这个文件就包含了用户最关心的关键决策点:

  • 服务端配置
  • 客户端配置
  • migration 步骤
  • 启用流程
  • TOTP 验证行为

这类场景比较少见:只先读这一个源文件,通常就足以快速判断它是否适合你。

这个 skill 至少需要哪些输入

想让 two-factor-authentication-best-practices skill 给出真正有用的结果,建议提供:

  • 你的 Better Auth 服务端配置文件路径
  • 你的 Better Auth 客户端配置文件路径
  • 你要做纯 TOTP,还是 TOTP 加邮件/SMS OTP
  • 你的用户表结构和 migration 当前状态
  • 你期望的 setup、challenge、备用恢复码、trusted devices 交互方式

缺少这些信息,产出通常会停留在过于泛泛的层面。

核心接入路径

这个 skill 给出的实操接入路径是:

  1. 在 Better Auth 服务端配置中加入 twoFactor()
  2. 设置 issuer
  3. 在客户端配置中加入 twoFactorClient()
  4. 运行 npx @better-auth/cli migrate
  5. 确认用户表里已经出现预期的 2FA secret 列

这里的 migration 校验很关键,因为很多“安装失败”本质上并不是 plugin 问题,而是 schema 没对齐。

用这个服务端示例锚定你的实现

这个 skill 的服务端配置核心示例如下:

import { betterAuth } from "better-auth";
import { twoFactor } from "better-auth/plugins";

export const auth = betterAuth({
  appName: "My App",
  plugins: [
    twoFactor({
      issuer: "My App",
    }),
  ],
});

实际接入时,issuer 是最重要的输入之一,因为它会直接影响认证器应用中的显示名称,以及用户在设置过程中对该 2FA 配置的信任感。

客户端示例与重定向处理

客户端流程和插件安装同样重要:

import { createAuthClient } from "better-auth/client";
import { twoFactorClient } from "better-auth/client/plugins";

export const authClient = createAuthClient({
  plugins: [
    twoFactorClient({
      onTwoFactorRedirect() {
        window.location.href = "/2fa";
      },
    }),
  ],
});

如果你是为了 Access Control 落地 two-factor-authentication-best-practices,不要把重定向处理当成可有可无的“体验优化”。它本身就是认证流程的一部分。你应该尽早明确 challenge 页面放在哪里,以及这个页面需要承载哪些状态。

怎样给这个 skill 提问,效果更好

一个较弱的请求:

  • “Help me add 2FA”

一个更强的请求:

  • “I use Better Auth in a React app. My server config is in src/lib/auth.ts and my client auth setup is in src/lib/auth-client.ts. I want TOTP with backup codes, a /settings/security enrollment page, a /2fa challenge route, and a migration checklist. Show exact code changes and call out anything that can break the flow.”

更强的版本给了 skill 足够上下文,它才能输出可直接实现的方案,而不是泛泛建议。

如何把一个粗略目标变成完整 prompt

想更好地使用 two-factor-authentication-best-practices,可以按这个模式组织输入:

  • 当前技术栈:框架、Better Auth 文件位置
  • 希望启用的因子:TOTP、email OTP、SMS OTP、backup codes
  • UX 节点:enrollment page、challenge route、recovery flow
  • 安全规则:password verification、trusted devices、session behavior
  • 输出形式:patch、checklist、code snippets 或 review notes

示例:

Apply two-factor-authentication-best-practices to my Better Auth setup.
Server file: `server/auth.ts`
Client file: `web/auth-client.ts`
Need: TOTP enrollment, backup codes, trusted-device option, redirect to `/auth/2fa`
Also include migration verification and note when `twoFactorEnabled` becomes true.

能减少出错的工作流

一个更稳妥的工作流是:

  1. 先确认 Better Auth 在不开启 2FA 时已经工作正常
  2. 添加服务端 plugin
  3. 添加客户端 plugin 和重定向处理
  4. 运行 migration
  5. 验证 schema 变更
  6. 实现 enrollment UI
  7. 测试首次验证
  8. 增加备用恢复码展示与存储相关 UX
  9. 测试登录 challenge 和恢复路径

这个顺序很重要,因为如果在 migration 和流程接线完成前就先做 UI,往往会掩盖真正的断点在哪里。

很多团队会漏掉的重要行为细节

这个 skill 特别指出了一个关键点:twoFactorEnabled 不会在用户刚开始配置时就变成 true,只有首次 TOTP 验证成功后才会变成 true。这会直接影响:

  • onboarding 逻辑
  • enrollment 开始后的 UI 状态
  • audit logging
  • 用户扫了二维码但从未完成验证时,支持团队该如何判断

这正是它比普通 MFA prompt 更有价值的实现细节之一。

这个 skill 不会帮你自动化哪些事

这个 skill 在仓库路径下没有打包好的脚本、规则或辅助文件。因此应把它当作一份高信号的实现指南,而不是开箱即用的安装器。你仍然需要:

  • 按你的框架改写代码
  • 自己实现二维码 UI
  • 决定备用恢复码如何展示、如何要求用户确认
  • 在你自己的应用里测试 trusted-device 和恢复流程行为

two-factor-authentication-best-practices skill 常见问题

这个 skill 只适用于 Better Auth 吗?

是的。这个 two-factor-authentication-best-practices 指南专门讲的是 Better Auth 的 twoFactor plugin 及其相关客户端 plugin 用法。如果你使用的是 Auth.js、Firebase Auth、Cognito,或自研认证栈,请改用其他资源。

适合新手吗?

前提是你已经有一套能正常运行的 Better Auth 安装。如果满足这个条件,它对新手算友好;但它并不是认证、数据库或 migration 工作流的完整入门教程。

它只覆盖 TOTP 吗?

不是。skill 描述里也提到了通过 email/SMS 发送 OTP、备用恢复码、trusted devices,以及登录流程处理。不过从目前能看到的 setup 示例来看,重点明显更偏向 TOTP,所以最清晰、最成熟的接入路径依然是 TOTP。

什么情况下不该用这个 skill?

遇到以下情况就应跳过这个 skill:

  • 你并没有使用 Better Auth
  • 你需要的是产品对比,而不是实现帮助
  • 你想看不带代码的宽泛 two-factor-authentication-best-practices 策略建议
  • 你需要把 WebAuthn 或 passkeys 作为主因子,而不是走 Better Auth 的 2FA plugin 流程

它比直接问 AI 模型更好吗?

如果你做的是 Better Auth 专属的 2FA 集成,通常会更好。通用模型可能会给出与 Better Auth plugin API 或启用行为不匹配的 MFA 方案;而这个 skill 会把解法收敛到正确的原语和实现路径上。

它能帮助做 Access Control 设计吗?

可以,但只在其范围之内。two-factor-authentication-best-practices 在 Access Control 场景下最有价值的地方,是帮助你围绕登录与账户保护实现 step-up security。若你要设计更宽泛的授权模型,例如 RBAC 或 ABAC,它就没那么适用了。

如何改进 two-factor-authentication-best-practices skill 的输出效果

直接给出真实文件路径和当前代码结构

想最快提升输出质量,最有效的方法就是提供你当前的服务端与客户端 auth 文件。这样 skill 才能按你的 import 结构、plugin 数组写法和路由模式,给出真正可改的代码。

提前明确 factor 与恢复策略

请明确说明你要哪些流程:

  • 仅 TOTP
  • TOTP 加 backup codes
  • TOTP 加 email/SMS fallback
  • trusted-device 支持
  • enrollment 前要求再次验证密码

这些选择会实质性改变输出内容。若你不说,skill 就只能猜。

明确要求 migration 与验证步骤

常见失败模式之一,是只拿到代码片段,却没有运行层面的校验步骤。建议主动要求:

  • migration command
  • schema verification step
  • 预期应出现的列
  • enrollment 和 sign-in challenge 的测试用例

这样会让 two-factor-authentication-best-practices 的安装过程更安全。

让 skill 把 setup 和 UX 分开输出

可以要求它按以下部分组织输出:

  1. plugin installation
  2. schema changes
  3. enrollment UI
  4. challenge flow
  5. backup/recovery handling
  6. test checklist

这样能避免把代码、路由和策略建议混在一起,导致回答结构不清。

留意这些常见失败模式

大多数糟糕结果都来自:

  • 忘了加客户端 plugin
  • 缺少重定向逻辑
  • 没有执行 migration
  • 错以为首次验证前 2FA 就已经启用
  • 做了二维码展示,却没处理 backup code
  • 把 trusted devices 误当成纯 UI 功能

如果你在第一版答案里看到这些缺口,应该继续要求对方按正确流程重新审查。

在第一版方案后继续迭代

当 skill 已经给出一版实现方案后,可以继续追问来提升质量:

  • “What edge cases are missing?”
  • “Review this flow for lockout risk.”
  • “Add test scenarios for failed TOTP, backup code use, and device trust.”
  • “Rewrite this for my exact route structure.”

很多时候,正是第二轮迭代,才会让这个 skill 真正达到可部署的程度。

评分与评论

暂无评分
分享你的评价
登录后即可为这个技能评分并发表评论。
G
0/10000
最新评论
保存中...