Express + MongoDB 实现用户登录

打印 上一主题 下一主题

主题 1114|帖子 1114|积分 3342

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
使用 `User.findOne({ username })` 根据用户名查找用户,如果用户不存在,返回 404 错误。调用 `user.comparePassword(password)` 方法比力用户输入的密码和数据库中存储的加密密码,如果密码不匹配,返回 401 错误。
  1. // 处理用户登录的路由
  2. app.post("/login", async (req, res) => {
  3.   try {
  4.     const { username, password } = req.body;
  5.     // 根据用户名查找用户
  6.     const user = await User.findOne({ username });
  7.     if (!user) {
  8.       return res.status(404).json({ message: "User not found" });
  9.     }
  10.     // 比较密码
  11.     const isPasswordValid = await user.comparePassword(password);
  12.     if (!isPasswordValid) {
  13.       return res.status(401).json({ message: "Invalid password" });
  14.     }
  15.     // 生成 JWT
  16.     const token = jwt.sign(
  17.       { userId: user._id, username: user.username },
  18.       secretKey,
  19.       {
  20.         expiresIn: "1h", // 令牌有效期为 1 小时,可根据需求调整
  21.       }
  22.     );
  23.     res.json({ message: "Login successful", token });
  24.   } catch (error) {
  25.     console.error("Error during login:", error);
  26.     res.status(500).json({ error: "Internal Server Error" });
  27.   }
  28. });
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表