<p><img src="https://img.cveoy.com/0/885B78202C8321F196B1E57651300555.webp" alt="用Jquery+AJAX+MongoDB数据库实现用户登录注册和用户登陆验证以及具体的后端实现方法" /></p>
<ol>
<li>用户注册:</li>
</ol>
<p>前端代码:</p>
<form id="register-form">
  <label for="username">用户名:</label>
  <input type="text" id="username" name="username"><br>
  <label for="password">密码:</label>
  <input type="password" id="password" name="password"><br>
  <button type="submit">注册</button>
</form>
<script>
  $(document).ready(function() {
    $("#register-form").submit(function(event) {
      event.preventDefault(); // 阻止表单默认提交行为
      var username = $("#username").val();
      var password = $("#password").val();
      $.ajax({
        url: "/register",
        type: "POST",
        data: {username: username, password: password},
        success: function(data) {
          alert(data.msg);
          if (data.success) {
            // 注册成功跳转到登录页面
            window.location.href = "/login";
          }
        }
      });
    });
  });
</script>
<p>后端代码:</p>
<p>const express = require(&quot;express&quot;);
const bodyParser = require(&quot;body-parser&quot;);
const bcrypt = require(&quot;bcrypt&quot;);
const app = express();</p>
<p>app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());</p>
<p>// 连接MongoDB数据库
const MongoClient = require(&quot;mongodb&quot;).MongoClient;
const url = &quot;mongodb://localhost:27017/mydb&quot;;
let db;</p>
<p>MongoClient.connect(url, function(err, client) {
if (err) throw err;
db = client.db(&quot;mydb&quot;);
});</p>
<p>// 处理注册请求
app.post(&quot;/register&quot;, function(req, res) {
const username = req.body.username;
const password = req.body.password;
// 检查用户名是否已经存在
db.collection(&quot;users&quot;).findOne({username: username}, function(err, result) {
if (err) throw err;
if (result) {
res.json({success: false, msg: &quot;用户名已经存在&quot;});
} else {
// 对密码进行加密处理
bcrypt.hash(password, 10, function(err, hash) {
if (err) throw err;
// 存储用户信息到数据库
db.collection(&quot;users&quot;).insertOne({username: username, password: hash}, function(err, result) {
if (err) throw err;
res.json({success: true, msg: &quot;注册成功&quot;});
});
});
}
});
});</p>
<ol start="2">
<li>用户登录:</li>
</ol>
<p>前端代码:</p>
<form id="login-form">
  <label for="username">用户名:</label>
  <input type="text" id="username" name="username"><br>
  <label for="password">密码:</label>
  <input type="password" id="password" name="password"><br>
  <button type="submit">登录</button>
</form>
<script>
  $(document).ready(function() {
    $("#login-form").submit(function(event) {
      event.preventDefault(); // 阻止表单默认提交行为
      var username = $("#username").val();
      var password = $("#password").val();
      $.ajax({
        url: "/login",
        type: "POST",
        data: {username: username, password: password},
        success: function(data) {
          alert(data.msg);
          if (data.success) {
            // 登录成功跳转到首页
            window.location.href = "/";
          }
        }
      });
    });
  });
</script>
<p>后端代码:</p>
<p>// 处理登录请求
app.post(&quot;/login&quot;, function(req, res) {
const username = req.body.username;
const password = req.body.password;
// 查找用户信息
db.collection(&quot;users&quot;).findOne({username: username}, function(err, result) {
if (err) throw err;
if (result) {
// 比较密码是否正确
bcrypt.compare(password, result.password, function(err, match) {
if (err) throw err;
if (match) {
// 登录成功
res.json({success: true, msg: &quot;登录成功&quot;});
} else {
res.json({success: false, msg: &quot;用户名或密码错误&quot;});
}
});
} else {
res.json({success: false, msg: &quot;用户名或密码错误&quot;});
}
});
});</p>
<ol start="3">
<li>用户登录验证:</li>
</ol>
<p>前端代码:</p>
<script>
  $(document).ready(function() {
    // 页面加载完成后向后端发送请求,验证用户是否已经登录
    $.ajax({
      url: "/check_login",
      type: "GET",
      success: function(data) {
        if (data.success) {
          // 用户已经登录
        } else {
          // 用户未登录,跳转到登录页面
          window.location.href = "/login";
        }
      }
    });
  });
</script>
<p>后端代码:</p>
<p>// 验证用户是否已经登录
app.get(&quot;/check_login&quot;, function(req, res) {
if (req.session.user) {
res.json({success: true});
} else {
res.json({success: false});
}
});</p>
<ol start="4">
<li>具体的后端实现方法:</li>
</ol>
<p>以上代码中使用了Express框架、Body Parser中间件、MongoDB数据库和Bcrypt密码加密库。其中:</p>
<ul>
<li>Express框架用于构建Web应用程序,提供路由、中间件等功能;</li>
<li>Body Parser中间件用于解析请求体,将POST请求中的参数转换为JSON格式;</li>
<li>MongoDB数据库用于存储用户信息,通过MongoDB Node.js驱动程序连接数据库,并使用collection对象执行CRUD操作;</li>
<li>Bcrypt密码加密库用于将用户密码加密,防止密码泄露。</li>
</ul>
<p>通过以上代码,我们可以实现用户注册、用户登录和用户登录验证功能。</p>

原文地址: https://www.cveoy.top/t/topic/duYL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录