Express + MongoDB 实现登录验证码

使用 svg-captcha 生成 SVG 格式验证码,express-session 存储验证码

一、安装依赖

bash 复制代码
npm install svg-captcha express-session

二、核心代码示例

javascript 复制代码
const svgCaptcha = require("svg-captcha");
const session = require("express-session");

// 配置会话中间件
app.use(
  session({
    secret: "your-secret-key",
    resave: false,
    saveUninitialized: true,
  })
);

// 生成验证码
app.get("/captcha", (req, res) => {
  const captcha = svgCaptcha.create();
  req.session = req.session || {};
  req.session.captcha = captcha.text;
  res.type("svg");
  res.status(200).send(captcha.data);
});

// 用户登录
app.post("/login", async (req, res) => {
  const { username, password, captcha } = req.body;
  if (req.session.captcha !== captcha) {
    return res.status(400).json({ error: "验证码错误" });
  }
  try {
    const user = await User.findOne({ username, password });
    if (user) {
      res.status(200).json({ message: "登录成功" });
    } else {
      res.status(401).json({ error: "用户名或密码错误" });
    }
  } catch (error) {
    res.status(500).json({ error: "登录失败", details: error.message });
  }
});
相关推荐
jiayou6421 小时前
KingbaseES 实战:审计追踪配置与运维实践
数据库
NineData1 天前
NineData 迁移评估功能正式上线
数据库·dba
NineData2 天前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师2 天前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
全栈老石2 天前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
倔强的石头_3 天前
kingbase备份与恢复实战(二)—— sys_dump库级逻辑备份与恢复(Windows详细步骤)
数据库
jiayou644 天前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤5 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区6 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
AI全栈实验室6 天前
MongoDB迁移金仓踩了5个坑,最后一个差点回滚
mongodb