当前位置:首页 > React

react实现短信验证注册

2026-01-27 12:16:42React

实现短信验证注册的步骤

后端API准备
确保已有发送短信验证码的API接口,通常需要手机号作为参数,返回成功或失败状态。验证码应由服务端生成并存储(如Redis),设置合理有效期(如5分钟)。

前端组件设计
创建包含手机号输入框、验证码输入框和获取验证码按钮的表单。使用React的useState管理表单状态:

const [phone, setPhone] = useState('');
const [code, setCode] = useState('');
const [countdown, setCountdown] = useState(0);

倒计时逻辑
点击获取验证码按钮后触发倒计时,防止重复请求:

const handleSendCode = () => {
  if (!phone) return alert('请输入手机号');
  if (countdown > 0) return;

  // 调用发送验证码API
  api.sendSmsCode(phone).then(() => {
    setCountdown(60);
    const timer = setInterval(() => {
      setCountdown(prev => (prev > 0 ? prev - 1 : (clearInterval(timer), 0)));
    }, 1000);
  });
};

表单验证与提交
提交时验证手机号和验证码格式,调用注册API:

const handleSubmit = (e) => {
  e.preventDefault();
  if (!/^\d{6}$/.test(code)) return alert('验证码格式错误');
  api.register({ phone, code }).then(res => {
    // 注册成功处理
  });
};

安全增强措施
对手机号格式做前端校验(如正则/^1[3-9]\d{9}$/),敏感接口增加防重放攻击机制。服务端需校验验证码与手机号是否匹配。

关键代码示例

完整表单组件示例:

react实现短信验证注册

function RegisterForm() {
  const [form, setForm] = useState({ phone: '', code: '' });
  const [countdown, setCountdown] = useState(0);

  const sendCode = () => {
    if (!/^1\d{10}$/.test(form.phone)) return alert('手机号无效');
    if (countdown > 0) return;

    api.sendSmsCode(form.phone).then(() => {
      setCountdown(60);
      const timer = setInterval(() => {
        setCountdown(v => v > 0 ? v - 1 : (clearInterval(timer), 0));
      }, 1000);
    });
  };

  const submit = () => {
    if (!/^\d{6}$/.test(form.code)) return alert('验证码为6位数字');
    api.register(form).then(() => {
      // 跳转登录页
    });
  };

  return (
    <form>
      <input 
        value={form.phone}
        onChange={e => setForm({...form, phone: e.target.value})}
        placeholder="手机号"
      />
      <div>
        <input 
          value={form.code}
          onChange={e => setForm({...form, code: e.target.value})}
          placeholder="验证码"
        />
        <button 
          type="button" 
          onClick={sendCode}
          disabled={countdown > 0}
        >
          {countdown > 0 ? `${countdown}s后重试` : '获取验证码'}
        </button>
      </div>
      <button type="button" onClick={submit}>注册</button>
    </form>
  );
}

注意事项

  • 生产环境应使用HTTPS协议传输数据
  • 验证码建议包含字母数字混合,提高安全性
  • 重要操作(如修改密码)需二次验证
  • 前端校验需与后端校验保持一致,不能替代服务端验证

标签: 短信react
分享给朋友:

相关文章

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 基础页面结构 在 s…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

react如何收录

react如何收录

React 收录方法 React 的收录主要涉及搜索引擎优化(SEO)和预渲染技术。由于 React 是单页应用(SPA),默认情况下内容由 JavaScript 动态生成,可能导致搜索引擎爬虫难以收…

如何创建react

如何创建react

创建React项目的步骤 使用Create React App工具快速搭建React项目。确保已安装Node.js(版本需≥14.0.0)和npm(版本需≥5.6)。 打开终端或命令行工具,运行以下…