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 });
  }
});
相关推荐
IvorySQL1 天前
PostgreSQL 全表 count 优化实践:从 SeqScan 痛点分析到 heapam 改进与性能突破
数据库·postgresql·oracle·deepseek·ivorysql
ypf52083 天前
Docker 中安装 PostgreSQL 16
数据库
字节跳动数据平台3 天前
火山引擎多模态数据湖:基于 Daft 与 Lance,构筑 AI 时代数据湖新范式
数据结构·数据库·数据挖掘
倔强的石头_4 天前
零门槛体验国产数据库硬核实力 —— 金仓 KingbaseES 在线体验平台全解析
数据库
AAA修煤气灶刘哥4 天前
数据库优化自救指南:从SQL祖传代码到分库分表的骚操作
数据库·后端·mysql
老纪的技术唠嗑局4 天前
经验分享 —— 在 Ubuntu 虚拟机中部署 OceanBase 数据库
数据库·ubuntu
咖啡Beans4 天前
MySQL中使用@符号定义用户变量
数据库·mysql
GreatSQL5 天前
MySQL迁移至GreatSQL后,timestamp字段插入报错解析
数据库
expect7g5 天前
COW、MOR、MOW
大数据·数据库·后端
DemonAvenger5 天前
MySQL海量数据快速导入导出技巧:从实战到优化
数据库·mysql·性能优化