You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js+MongoDB用户状态验证问题:未验证用户禁止登录

补充用户状态验证逻辑实现(Node.js + MongoDB)

针对你的需求,在现有登录验证控制器中加入用户状态判断逻辑即可,核心是在账号密码验证通过后,检查用户的状态字段,根据状态决定是否允许登录。以下是修改后的完整代码:

exports.usuario_verify = function (req, res) { 
  let usuario = req.body.username;
  let pass = req.body.password;
  let datos = "Usuario: " + usuario + " Pass: " + pass;
  if (usuario && pass) {
    // 验证账号密码
    User.find({ Username: usuario, Password: pass }, function (error, results) {
      if (error) {
        let data = {
          title: "Ingreso al sistema",
          message: "Hubo un error contacte a soporte",
        };
        return res.render("login", data);
      }

      if (results.length > 0) {
        let roles;
        let userStatus;
        // 提取用户角色和状态
        results.forEach((element) => {
          roles = element.Roles;
          // 注意:这里的Status要和你MongoDB集合中存储状态的字段名保持一致
          userStatus = element.Status;
        });

        // 先判断用户状态
        if (userStatus === "unverified") {
          let data = {
            title: "Ingreso al sistema",
            message: "你的账号尚未验证,请完成验证后登录",
          };
          return res.render("login", data);
        }

        // 状态验证通过,设置session并跳转
        req.session.usuario = usuario;
        req.session.role = roles;
        if (roles === "admin") {
          res.render("admin_home");
        } else if (roles === "user") {
          res.render("coleccion");
        }
      } else {
        let data = {
          title: "Ingreso al sistema",
          message: "Usuario o contraseña no son correctos",
        };
        res.render("login", data);
      }
    });
  } else {
    let data = {
      title: "Ingreso al sistema",
      message: "Usuario o contraseña no son correctos",
    };
    res.render("login", data);
  }
};

exports.usuario_add = function (req, res) {
  res.send("Ruta controlada");
};

关键修改说明:

  • 新增userStatus变量,从查询结果中提取用户状态字段(注意字段名要和你MongoDB中的实际字段匹配,比如如果是小写status就改成element.status)
  • 在账号密码验证通过后,优先判断用户状态:如果是unverified,直接返回登录页面并提示未验证信息,终止后续逻辑
  • 只有当用户状态为verified时,才继续执行设置session和角色跳转的逻辑

内容的提问来源于stack exchange,提问作者Solution

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:42:35