1. 验证第三方平台发送的验证码可以通过以下步骤进行:
  • 用户在第三方平台上输入手机号并点击获取验证码
  • 第三方平台将手机号和验证码发送给服务器端
  • 服务器端接收到请求后,生成一个随机验证码,并将该验证码存储在缓存中,并设置有效期
  • 服务器端将该验证码发送给用户手机
  • 用户在客户端输入验证码并提交
  • 服务器端接收到用户提交的验证码后,从缓存中取出并比对,如果一致,则验证成功,否则验证失败
  1. 对验证码有效期进行限制可以通过以下方法实现:
  • 在缓存中存储验证码的同时,记录下验证码的生成时间
  • 在比对验证码时,先判断验证码是否过期,如果过期则验证失败
  1. 以下是一个基于 Node.js 的验证码验证示例代码:
const express = require('express');
const bodyParser = require('body-parser');
const cache = require('memory-cache');

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// 验证码有效期为5分钟
const expireTime = 5 * 60 * 1000;

// 生成随机验证码
function generateCode() {
  return Math.floor(Math.random() * 900000 + 100000).toString();
}

// 发送验证码
app.post('/sendCode', (req, res) => {
  const { phone } = req.body;
  const code = generateCode();
  cache.put(phone, { code, expireTime, createTime: new Date().getTime() });
  // TODO: 调用第三方平台发送验证码
  res.send({ code });
});

// 验证验证码
app.post('/verifyCode', (req, res) => {
  const { phone, code } = req.body;
  const cacheData = cache.get(phone);
  if (!cacheData || cacheData.code !== code) {
    res.send({ success: false, message: '验证码错误或已过期' });
    return;
  }
  const { expireTime, createTime } = cacheData;
  if (new Date().getTime() - createTime > expireTime) {
    res.send({ success: false, message: '验证码错误或已过期' });
    return;
  }
  res.send({ success: true });
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});
  1. 如果数据量过大,使用 Map 可能会卡住。可以使用内存缓存库,如 memory-cache、redis 等,来存储验证码和有效期信息。这些库支持快速存储和检索大量数据,并且可以设置过期时间,非常适合验证码等临时数据的存储。
Node.js 验证码验证及有效期限制:代码示例与性能优化

原文地址: https://www.cveoy.top/t/topic/mu10 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录