node.js和mysql实现登录的案例
时间: 2023-12-23 22:09:43 浏览: 87
node之实现登录注册分页小案例(node+vue+elementUI+axios+mysql)
以下是使用 Node.js 和 MySQL 实现登录的示例代码,供参考:
1. 安装依赖
```bash
npm install express mysql body-parser express-session --save
```
2. 创建数据库
在 MySQL 中创建一个名为 `test` 的数据库,并在其中创建一个名为 `users` 的表,表结构如下:
```sql
CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
```
3. 编写服务器代码
```javascript
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const app = express();
// 创建 MySQL 连接池
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'test'
});
// 配置中间件
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(session({
secret: 'session secret',
resave: false,
saveUninitialized: true,
cookie: { secure: false }
}));
// 处理登录请求
app.post('/login', (req, res) => {
const { username, password } = req.body;
const sql = `SELECT * FROM users WHERE username = ? AND password = ?`;
pool.query(sql, [username, password], (err, results) => {
if (err) {
console.error(err);
res.sendStatus(500);
return;
}
if (results.length > 0) {
req.session.username = username;
res.json({ success: true });
} else {
res.json({ success: false });
}
});
});
// 处理退出请求
app.post('/logout', (req, res) => {
req.session.destroy();
res.json({ success: true });
});
// 监听端口
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
```
在上述代码中,我们创建了一个 MySQL 连接池,用于连接数据库。在处理登录请求时,我们通过查询数据库判断用户名和密码是否匹配,如果匹配则将用户名存储在 session 中,并返回登录成功的消息。在处理退出请求时,我们销毁 session,以达到退出登录的效果。
4. 编写客户端代码
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form id="login-form">
<label>Username:</label>
<input type="text" name="username"><br>
<label>Password:</label>
<input type="password" name="password"><br>
<button type="submit">Login</button>
</form>
<p id="message"></p>
<script>
const form = document.getElementById('login-form');
const message = document.getElementById('message');
form.addEventListener('submit', (event) => {
event.preventDefault();
const data = new FormData(form);
fetch('/login', {
method: 'POST',
body: data
})
.then(response => response.json())
.then(result => {
if (result.success) {
message.textContent = 'Login success.';
} else {
message.textContent = 'Login failed.';
}
})
.catch(error => {
console.error(error);
});
});
</script>
</body>
</html>
```
在上述代码中,我们创建了一个登录表单,当用户提交表单时,通过 Fetch API 发送 POST 请求到服务器端,以验证用户的用户名和密码。如果登录成功,则在页面上显示一条消息,否则显示登录失败的消息。
以上就是一个使用 Node.js 和 MySQL 实现登录的示例代码。请注意,此代码仅供参考,实际应用中可能需要进行更多的安全性和稳定性方面的处理。
阅读全文