Express + MongoDB 实现用户登录

devtools/2025/3/4 5:05:24/

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

javascript">// 处理用户登录的路由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" });}// 生成 JWTconst 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.ppmy.cn/devtools/164373.html

相关文章

怎么进行mysql的优化?

MySQL 的优化是一个系统性的工作,涉及多个层面,包括查询优化、索引优化、配置优化、架构优化等。以下是一些常见的 MySQL 优化方法: 查询优化 避免全表扫描:确保查询能够使用索引,避免 SELECT *,只选择需要…

在Pycharm中将ui文件修改为py文件

在Pycharm中将ui文件修改为py文件 有些时候,我们需要把QTDesigner生成的.ui文件修改为.py文件 在一些教程中,通常使用cmd打开终端修改,或者是有一些人写了一些脚本来修改 这里我们可以使用pycharm来快速的修改 首先,我们在pyc…

留守儿童|基于SprinBoot+vue的留守儿童爱心网站(源码+数据库+文档)

留守儿童爱心网站 目录 基于SprinBootvue的留守儿童爱心网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&…

开源项目Wren AI 文本到SQL解决方案详解

开源项目Wren AI: 文本到SQL解决方案详解 项目地址:https://gitcode.com/gh_mirrors/wr/WrenAI 一、项目介绍 Wren AI 是一个开放源码的文本到SQL解决方案,旨在帮助数据团队通过自然语言查询而无需编写复杂SQL语句就能获取结果和洞察.作为一个RAG(可检索生成)架构上的组件,W…

wav格式的音频压缩,WAV 转 MP3 VBR 体积缩减比为 13.5%、多个 MP3 格式音频合并为一个、文件夹存在则删除重建,不存在则直接建立

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 问题一:wav格式的音频压缩为哪些格式,网络传输给用户播放…

Redis 高可用性:如何让你的缓存一直在线,稳定运行?

🎯 引言:Redis的高可用性为啥这么重要? 在现代高可用系统中,Redis 是一款不可或缺的分布式缓存与数据库系统。无论是提升访问速度,还是实现数据的高效持久化,Redis 都能轻松搞定。可是,当你把 …

Github 2025-03-01 开源项目月报 Top19

根据Github Trendings的统计,本月(2025-03-01统计)共有19个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目9TypeScript项目6Jupyter Notebook项目2JavaScript项目2非开发语言项目1Svelte项目1Rust项目1Go项目1C++项目1Ollama: 本地大型语言模…

Linux内核以太网驱动分析

1.网络接口卡接收和发送数据在Linux内核中的处理流程如下: 1. 网络接口卡(Network Interface Card, NIC) 作用:负责物理层的数据传输,将数据包从网络介质(如以太网线)读取到内存中,或…