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 });
  }
});
相关推荐
南棱笑笑生11 分钟前
20250617在ubuntu20.04.6下编译飞凌OK3576-C_Linux6.1.75_用户资料_R1(更新日期_20241014)
数据库
花开月满西楼1 小时前
Android实例项目【智能家居系统】实现数据库登录注册+动画效果+网页跳转+短信发送!!!
android·数据库·智能家居
洗发水很好用1 小时前
制造部门的转型目标与场景痛点
大数据·数据库·制造
芳菲菲其弥章1 小时前
【数据分析三:Data Storage】数据存储
数据库·数据挖掘·数据分析
web守墓人2 小时前
【go】(仅思路)使用go实现一款简单的关系型数据库gosql
开发语言·数据库·golang
码码不爱我3 小时前
报错:Maven无法解析插件 org.apache.maven.plugins:maven-surefire-plugin:3.0.0
java·数据库·maven
荔枝吻3 小时前
【沉浸式解决问题】优化MySQL中多表union速度慢的问题
数据库·mysql·union
程序边界4 小时前
KingbaseES在线体验平台深度测评:基于MCP接口管理的Oracle风格SQL实战
数据库
二闹4 小时前
新手村生存指南:MySQL从入门到面试求生(附通关秘籍)
数据库
朝九晚五ฺ5 小时前
【MySQL基础】表的功能实现:增删查改详细讲解
数据库·mysql