React / Vue / Angular 接入 Email Verification API:三大框架实战示例 React / Vue / Angular 接入 Email Verification API三大框架实战示例【免费下载链接】email-verificationverified autofill项目地址: https://gitcode.com/GitHub_Trending/em/email-verificationEmail Verification API 是浏览器原生的邮箱验证方案它让用户在注册、登录时跳过手动验证码由浏览器直接向邮箱服务商申领加密验证令牌EVT并自动填入表单verified autofill。本文带你在 React、Vue、Angular 三大前端框架中接入这套 Email Verification API每个框架只需「一个隐藏输入框 一段 nonce」即可上手。什么是 Email Verification API告别 OTP 验证码传统邮箱验证的流程你一定熟悉网站生成验证码 → 发到邮箱 → 用户切换 App → 抄回验证码。这个过程慢、费流量验证码邮件常进垃圾箱还容易遭受钓鱼。Email Verification APIEVP换了个思路传统 OTP 验证Email Verification API依赖邮件投递易进垃圾箱复用邮箱服务商的登录会话用户手动抄写验证码浏览器自动完成用户只需点一次允许存在钓鱼风险加密签名令牌EVT防伪造、防重放整个方案由三方协作完成你的网站验证方 Verifier、浏览器中介、邮箱服务商签发方 Issuer。详细背景见仓库的 README.md完整协议说明在 index.bs 与渲染后的 index.html。浏览器代发的 4 步验证流程理解流程后接入其实没有想象中复杂 前提用户已登录邮箱服务商浏览器通过 Login Status API 感知登录态网站声明需求在表单里放一个带nonce属性的隐藏输入框autocompleteemail-verification-token浏览器自动申领用户选中邮箱地址后浏览器发现签发方、校验会话、弹出授权提示获批后拿到加密令牌 EVT 并与你的站点域名 nonce 绑定表单提交浏览器在onsubmit前把令牌填入隐藏字段你的服务器收到后做一次签名校验即可无需再发验证邮件规范中完整的交互示例从 HTML 表单到 POST 载荷可以在 index.bs 查看浏览器处理模型在 index.bs。框架无关核心1 行隐藏输入框打通三大框架无论 React、Vue 还是 Angular接入的关键都只有这一段 HTML 声明框架无关纯 HTML 也能用input typeemail nameemail autocompleteemail !-- 关键隐藏字段 服务端生成的 nonce -- input typehidden nameevt autocompleteemail-verification-token nonce服务端每次渲染生成的随机值两条硬性规则来自规范 index.bsnonce必须由服务端生成每次页面渲染唯一用于绑定令牌、防重放攻击浏览器拿不到令牌时旧浏览器、邮箱服务商未支持该字段保持为空——你的服务器应优雅降级回传统 OTP 流程下面三大框架的差异只在于nonce 从哪来、表单怎么提交。React 接入实战服务端下发 nonce 受控表单React 场景下推荐把 nonce 作为 props 由 SSR 层下发如 Next.js 的 Server Component 传递或路由层取回避免写死在前端。// SignupForm.jsx function SignupForm({ nonce }) { const [email, setEmail] useState() return ( form action/signup methodpost input typeemail nameemail autoCompleteemail value{email} onChange{e setEmail(e.target.value)} / input typehidden nameevt autoCompleteemail-verification-token nonce{nonce} / buttonSign Up/button /form ) }要点使用原生表单提交而非纯 JS fetch。EVT 是在onsubmit事件触发之前由浏览器填入的传统表单提交才能自动带上令牌规范依据见 index.bs 的表单提交集成章节若必须用 fetch 提交也请保持new FormData(form)序列化令牌同样已在提交前入位服务器端拿不到evt字段时走原有邮件验证码流程Vue 3 接入实战template 自动绑定隐藏字段Vue 3 的script setup让绑定非常直观!-- SignupForm.vue -- template form action/signup methodpost input v-modelemail typeemail nameemail autocompleteemail input typehidden nameevt autocompleteemail-verification-token :noncenonce buttonSign Up/button /form /template script setup import { ref } from vue const props defineProps({ nonce: String }) // 由 Nuxt/SSR 层注入 const email ref() /script配合 Nuxt 时可在server/api或页面 setup 中生成 nonce 并透传给组件。与 React 相同的规则保持原生表单提交evt字段为空时服务端降级到 OTP。Angular 接入实战响应式表单 attr 绑定Angular 中用响应式表单Reactive Forms组织字段通过[attr.nonce]动态绑定属性!-- signup.component.html -- form [formGroup]form action/signup methodpost input typeemail nameemail formControlNameemail autocompleteemail input typehidden nameevt autocompleteemail-verification-token [attr.nonce]nonce buttonSign Up/button /form// signup.component.ts readonly form this.fb.group({ email: [] }) readonly nonce signal() // 由服务端渲染或 API 注入注意 Angular 的属性绑定语法nonce不是标准 DOM 属性务必使用[attr.nonce]而不是[nonce]。服务端验证与优雅降级检查清单 ✅三大框架的前端工作完成后服务器只需核对四件事规范在 index.bs 定义了验证方处理模型表单中是否存在evt字段没有 → 走传统验证码流程校验令牌签名由邮箱服务商签发SD-JWT 格式校验令牌绑定的nonce是否与本次渲染下发的一致防重放校验令牌中的邮箱与表单提交的邮箱是否匹配⚠️ 提醒EVT 证明的是用户已登录该邮箱服务商比 OTP 的验证码送达收件箱稍弱但规范认为实际效果等价。更多安全与隐私考量见 QUESTIONNAIRE.md。常见坑与排错指南2026 现状 目前是 Chrome 先行接入前请先完成本地环境自检完整步骤见 HOWTO.md浏览器支持需要 Chrome 145 且开启#email-verification-protocol实验开关chrome://flags正式版尚未全量推送邮箱服务商支持用户所选邮箱的域名必须已配置 DNS 委托记录_email-verification.域名 TXT iss签发方且用户已登录——不满足时令牌不会下发属于正常降级不是 Bugnonce 写死在前端最常见的失误。nonce 一旦泄露即可被重放务必服务端每次渲染生成用了纯 JS 提交onsubmit之后才取值会拿不到令牌保持表单原生提交时序参考资料 文件内容README.md提案背景、协议全流程、生态现状HOWTO.mdChrome 测试环境搭建与开发者上手步骤index.bs规范源文件HTML 扩展、浏览器处理模型index.html渲染后的规范文档QUESTIONNAIRE.md安全与隐私自审问卷三大框架的接入逻辑完全一致声明隐藏字段 → 服务端发 nonce → 原生提交 → 服务器验签降级。Email Verification API 让邮箱验证第一次像自动填充密码一样顺滑现在跟进标准就能让用户体验先人一步 【免费下载链接】email-verificationverified autofill项目地址: https://gitcode.com/GitHub_Trending/em/email-verification创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考