当前位置: 首页 > article >正文

Express + MongoDB 实现登录验证码

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

一、安装依赖

npm install svg-captcha express-session

二、核心代码示例

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 });
  }
});

http://www.kler.cn/a/582249.html

相关文章:

  • 【踩坑记录】MAC M4 mini 系统初始化
  • Express + MongoDB + multer 解决文件上传 originalname 中文乱码
  • 量子计算如何颠覆能源优化领域:从理论到实践
  • 02C#基本结构篇(D4_注释-访问修饰符-标识符-关键字-运算符-流程控制语句)
  • TinyVue 的 DatePicker 组件支持日期面板单独使用啦!
  • 在虚拟机VMware上安装CENTOS7-图文教程
  • ES Filter Query 区别
  • QT系列教程(20) Qt 项目视图便捷类
  • 界面控件Kendo UI for Vue 2024 Q4亮点 - 增强图表的数据模板、导航功能
  • 表、索引统计信息锁定和解锁
  • Burpsuite使用笔记
  • Windows控制台函数:控制台读取输入函数ReadConsoleA()
  • PySide(PyQT)的mouseMoveEvent()和hoverMoveEvent()的区别
  • 数据可视化新高度:用seaborn.heatmap为数据加热
  • Spring Security 新版本配置
  • 23.Harmonyos Next仿uv-ui 组件NumberBox 步进器组件基础用法
  • Vue3 + Spring Boot集成JWT认证
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-7.2.2自动扩缩容策略(基于HPA)
  • 【数据结构】1数据结构基本概念 【作业1数据结构综述】
  • 力扣hot100_普通数组