当前位置:首页 > React

react实现扫码登录

2026-01-27 10:30:46React

React 实现扫码登录方案

扫码登录通常基于 WebSocket 或轮询机制实现,以下是具体实现步骤和代码示例。

准备工作

确保项目已安装必要依赖:

npm install qrcode.react axios

生成二维码

使用 qrcode.react 库生成包含服务端返回的 token 的二维码:

import QRCode from 'qrcode.react';

function LoginQRCode({ token }) {
  return <QRCode value={token} size={200} />;
}

服务端交互流程

  1. 前端请求生成二维码的 token

    const getToken = async () => {
    const res = await axios.get('/api/qrcode/token');
    return res.data.token;
    };
  2. 轮询检查扫码状态

    react实现扫码登录

    const checkScanStatus = async (token) => {
    const res = await axios.get(`/api/qrcode/check?token=${token}`);
    return res.data.status; // 'pending'|'scanned'|'confirmed'
    };

完整组件实现

import { useEffect, useState } from 'react';

function QRLogin() {
  const [token, setToken] = useState('');
  const [status, setStatus] = useState('init');

  useEffect(() => {
    const initQRCode = async () => {
      const newToken = await getToken();
      setToken(newToken);
      setStatus('pending');

      const timer = setInterval(async () => {
        const currentStatus = await checkScanStatus(newToken);
        setStatus(currentStatus);
        if (currentStatus === 'confirmed') {
          clearInterval(timer);
          // 登录成功处理
        }
      }, 2000);
    };

    initQRCode();
  }, []);

  return (
    <div>
      {status === 'pending' && <QRCode token={token} />}
      {status === 'scanned' && <p>请确认登录</p>}
      {status === 'confirmed' && <p>登录成功</p>}
    </div>
  );
}

服务端关键逻辑

  1. 生成随机 token 并设置过期时间
  2. 手机端扫码后关联用户信息与 token
  3. 电脑端轮询时返回扫码状态变化

安全注意事项

  • Token 应设置合理有效期(建议 2-5 分钟)
  • 采用 HTTPS 协议传输
  • 服务端需验证手机端请求来源合法性
  • 扫码确认操作需二次验证(如指纹/密码)

优化方向

  • 使用 WebSocket 替代轮询减少请求次数
  • 添加扫码成功音效/震动反馈
  • 实现自动跳转而非手动刷新

以上方案适用于大多数扫码登录场景,可根据实际需求调整交互细节。

标签: react
分享给朋友:

相关文章

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment 基本…

如何创建react

如何创建react

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

react项目如何

react项目如何

创建React项目 使用create-react-app工具快速初始化项目。确保已安装Node.js(建议版本≥12.0.0),运行以下命令生成新项目: npx create-react-app m…

如何恢复react

如何恢复react

恢复 React 项目的方法 检查并修复依赖项 运行 npm install 或 yarn install 重新安装所有依赖项。如果依赖项损坏或缺失,这将恢复项目所需的库和工具。 恢复删除的文件 如…

react如何启动

react如何启动

启动 React 项目的步骤 确保已安装 Node.js React 需要 Node.js 环境运行,建议安装最新稳定版(LTS)。可通过以下命令检查是否已安装: node -v npm -v…

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const relo…