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

Express + MongoDB 实现用户登录

使用 `User.findOne({ username })` 根据用户名查找用户,如果用户不存在,返回 404 错误。调用 `user.comparePassword(password)` 方法比较用户输入的密码和数据库中存储的加密密码,如果密码不匹配,返回 401 错误。

// 处理用户登录的路由

app.post("/login", async (req, res) => {

  try {

    const { username, password } = req.body;

    // 根据用户名查找用户

    const user = await User.findOne({ username });

    if (!user) {

      return res.status(404).json({ message: "User not found" });

    }

    // 比较密码

    const isPasswordValid = await user.comparePassword(password);

    if (!isPasswordValid) {

      return res.status(401).json({ message: "Invalid password" });

    }

    // 生成 JWT

    const token = jwt.sign(

      { userId: user._id, username: user.username },

      secretKey,

      {

        expiresIn: "1h", // 令牌有效期为 1 小时,可根据需求调整

      }

    );

    res.json({ message: "Login successful", token });

  } catch (error) {

    console.error("Error during login:", error);

    res.status(500).json({ error: "Internal Server Error" });

  }

});


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

相关文章:

  • 蓝桥杯好题推荐-----高精度减法
  • PyQt5入门教程和简单使用
  • 阿里云 Qwen2.5-Max:超大规模 MoE 模型架构和性能评估
  • [AIGC]Agent的ReAct原理基于LangChain框架的Agent构建详解
  • Windows系统安装GPU驱动/CUDA/cuDNN/PyTorch
  • PHP环境安装达梦数据库驱动实操
  • 迷你世界脚本玩家接口:Player
  • Excel 豆知识 - XLOOKUP 为啥会出 #N/A 错误
  • 【音视频】RGG、YUV基础
  • Docker 部署 Graylog 日志管理系统
  • 通往 AI 之路:Python 机器学习入门-语法基础
  • Mysql的基础命令有哪些?
  • Linux的缓存I/O和无缓存IO
  • macOS - 使用 tmux
  • React核心知识及使用场景
  • 对大模型输出的 logits 进行处理,从而控制文本的生成
  • 【人工智能】GPT-4 vs DeepSeek-R1:谁主导了2025年的AI技术竞争?
  • RocketMQ启动教程
  • Docker项目部署-部署前端
  • 一个基于C# Winform开源免费的通用快速开发框架,内置完整的权限架构!