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 });
  }
});
相关推荐
xier_ran39 分钟前
【infra之路】GPU 存储层次总结:L1 / L2 / HBM
java·网络·数据库
@insist1233 小时前
系统集成项目管理工程师-信息和文档管理
网络·数据库·软考·系统集成项目管理工程师·软考中项·软件水平考试
残 风4 小时前
PostgreSQL 存储机制详解
数据库·postgresql·开源·数据库开发
JacksonMx5 小时前
Java CompletableFuture 异步编程实战:从入门到架构师避坑指南
linux·数据库·python
tachibana25 小时前
性能指标的口径选择
数据库·人工智能·架构·大模型·llm
机器人梦想家6 小时前
具身机器人视觉服务的异步回调与并发控制
数据库·算法·机器人
小妖同学学AI6 小时前
开源向量数据库的王者:Milvus 深度解析,专为 AI 应用打造的云原生搜索引擎!
数据库·开源·milvus
l1258657 小时前
# RAG上线评估指标体系:六大核心指标与压测实战全解析
数据库·人工智能·python·mysql·langchain·milvus
一只鹿鹿鹿7 小时前
数据资产管理解决方案(Word文件)
大数据·数据库·安全·web安全·系统安全