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 场景需求。
该技能评分为 78/100,说明它是一个较扎实的目录收录候选:对于 Better Auth 相关需求,智能体可以获得明确的触发场景、具体的配置步骤,以及可直接参考的 API 示例,无需从泛化的 MFA 提示开始摸索即可实现 2FA。之所以未达到顶级水平,是因为仓库证据显示其文档主要集中在单个 `SKILL.md` 中,缺少安装元数据、规则说明,以及更完整的工作流或约束指引等辅助材料。
- 触发相关性强:描述明确面向 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 给出的实操接入路径是:
- 在 Better Auth 服务端配置中加入
twoFactor() - 设置
issuer - 在客户端配置中加入
twoFactorClient() - 运行
npx @better-auth/cli migrate - 确认用户表里已经出现预期的 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.tsand my client auth setup is insrc/lib/auth-client.ts. I want TOTP with backup codes, a/settings/securityenrollment page, a/2fachallenge 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.
能减少出错的工作流
一个更稳妥的工作流是:
- 先确认 Better Auth 在不开启 2FA 时已经工作正常
- 添加服务端 plugin
- 添加客户端 plugin 和重定向处理
- 运行 migration
- 验证 schema 变更
- 实现 enrollment UI
- 测试首次验证
- 增加备用恢复码展示与存储相关 UX
- 测试登录 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 分开输出
可以要求它按以下部分组织输出:
- plugin installation
- schema changes
- enrollment UI
- challenge flow
- backup/recovery handling
- 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 真正达到可部署的程度。
