教程 mongodb tutorial

实现用户注册与登录功能

用户注册与登录是大多数应用的基础功能,合理设计和实现该功能保证安全性和用户体验。

用户数据模型设计

设计用户文档结构,常见字段包括:

json
{
  "username": "string",
  "email": "string",
  "password": "string",   // 存储加密后的密码
  "createdAt": "date",
  "lastLogin": "date"
}

`

密码加密

  • 使用 bcrypt 或其他加密算法对密码进行哈希存储,避免明文保存。
  • 注册时对用户输入密码进行加密后存储。
  • 登录时对比加密密码验证身份。

注册流程示例(Node.js + Mongoose)

js
const bcrypt = require('bcrypt');
const User = require('./models/User'); // 假设已有 User 模型

async function register(username, email, password) {
  const existingUser = await User.findOne({ email });
  if (existingUser) throw new Error('Email already exists');

  const hashedPassword = await bcrypt.hash(password, 10);
  const user = new User({ username, email, password: hashedPassword, createdAt: new Date() });
  await user.save();
  return user;
}

登录流程示例

js
async function login(email, password) {
  const user = await User.findOne({ email });
  if (!user) throw new Error('User not found');

  const valid = await bcrypt.compare(password, user.password);
  if (!valid) throw new Error('Invalid password');

  // 更新最后登录时间
  user.lastLogin = new Date();
  await user.save();

  return user;
}

安全建议

  • 使用 HTTPS 确保数据传输安全。
  • 实现登录失败限制和验证码防止暴力破解。
  • 使用 JWT 或 session 管理用户身份。

通过合理设计数据模型和安全措施,MongoDB 可以高效支持用户注册与登录功能的实现。