verify-shell.md
模式 · PATTERN

安全验证外壳 VerifyShell

第三方人机验证(Cloudflare Turnstile、阿里云验证码)的外围壳:始终可见、占位固定,底下三种反馈态——通过、冷却、限流。

来源提炼自 AdmDesign 样张 · ui 为源VerifyShell.jsxTag.jsx机读patterns/verify-shell.md
外壳 + 三种反馈
第三方安全验证 · 始终可见外围壳
正在进行人机验证…CLOUDFLARE TURNSTILE
验证通过 · 可发送冷却中 · 60s请求过多 · 暂时拦截
import { VerifyShell } from './extracted/VerifyShell.jsx'

export function Shell() {
  return (
    <div style={{ width: 400, maxWidth: '100%' }}>
      <VerifyShell />
    </div>
  )
}

为什么要一个外壳

第三方验证控件的 iframe 加载慢、时有时无。直接放进表单,它出现和消失会把表单顶得上下跳。外壳先占住位置(最小高 54),真实 iframe 渲染在里面(children);外壳下方用状态胶囊统一给出反馈。

属性取值默认说明
titlestring'第三方安全验证 · 始终可见外围壳'外壳标题
providerstring'CLOUDFLARE\nTURNSTILE'右侧服务商标识(未传 children 时显示)
states('ok' · 'cooldown' · 'limited')[]三种都显示要显示的反馈态
childrenReactNode真实验证控件挂载点

规则

✓ 要单次 token:每次发送验证码前重新验证
✓ 要发送后 60 秒冷却,冷却中显示倒计时
✓ 要被限流时明确说「请求过多 · 暂时拦截」
✗ 不要验证失败时只让按钮变灰、不说原因