验证码
验证码插件通过为关键端点添加验证码验证,将机器人保护集成到你的Better Auth系统中。该插件确保只有人类用户才能执行注册、登录或重置密码等操作。目前支持以下提供商:
安装
将插件添加到你的auth配置中
将验证码令牌添加到你的请求头中
为所有受保护的端点在请求头中添加验证码令牌。以下示例展示如何在signIn
请求中包含它:
- 要在客户端实现Cloudflare Turnstile,请参阅官方Cloudflare Turnstile文档或使用react-turnstile等库。
- 要在客户端实现Google reCAPTCHA,请参阅官方Google reCAPTCHA文档或使用react-google-recaptcha(v2)和react-google-recaptcha-v3(v3)等库。
- 要在客户端实现hCaptcha,请参阅官方hCaptcha文档或使用@hcaptcha/react-hcaptcha等库。
工作原理
该插件作为中间件运行:它拦截所有发送到配置端点的POST
请求(参见插件选项部分中的endpoints
)。
它通过调用验证码提供商的/siteverify
在服务器上验证验证码令牌。
- 如果令牌缺失、被验证码提供商拒绝,或者
/siteverify
端点不可用,插件将返回错误并中断请求。 - 如果令牌被验证码提供商接受,中间件返回
undefined
,表示请求被允许继续。
插件选项
provider
(必需):你的验证码提供商。secretKey
(必需):用于服务器端验证的提供商密钥。endpoints
(可选):覆盖默认的强制验证码验证的路径数组。默认值为:["/sign-up/email", "/sign-in/email", "/forget-password",]
。minScore
(可选 - 仅适用于Google ReCAPTCHA v3):最低分数阈值。默认值为0.5
。siteKey
(可选 - 仅适用于hCaptcha):防止在一个站点密钥上发行的令牌在其他地方被兑换。siteVerifyURLOverride
(可选):覆盖验证码验证请求的端点URL。