用mysql+nodejs+session来做获取用户信息的接口
时间: 2023-09-14 16:08:45 浏览: 250
基于React+TS+Antd+NodeJS+MySQL实现的全栈项目实战【100012591】
首先,需要安装mysql、nodejs和express框架。
然后,创建一个数据库,并在其中创建一个用户表,包括用户ID、用户名和密码等字段。
接下来,在nodejs中使用express框架创建一个API接口,用于获取用户信息。在接口中,首先要验证用户的登录状态,即判断用户是否已经通过登录验证,并且是否存储了session信息。
如果用户已经登录并且有session信息,则可以通过session中存储的用户ID来查询用户信息,并将查询结果返回给前端。
以下是一个简单的示例代码:
```javascript
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const mysql = require('mysql');
const app = express();
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'mydb'
});
connection.connect();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(session({
secret: 'mysecret',
resave: false,
saveUninitialized: true
}));
app.post('/login', function(req, res) {
const username = req.body.username;
const password = req.body.password;
connection.query('SELECT * FROM users WHERE username=? AND password=?', [username, password], function(error, results, fields) {
if (error) throw error;
if (results.length > 0) {
req.session.userId = results[0].id;
res.send('Login successful');
} else {
res.send('Invalid username or password');
}
});
});
app.get('/user', function(req, res) {
if (req.session.userId) {
const userId = req.session.userId;
connection.query('SELECT * FROM users WHERE id=?', [userId], function(error, results, fields) {
if (error) throw error;
if (results.length > 0) {
res.send(results[0]);
} else {
res.send('User not found');
}
});
} else {
res.send('Please log in');
}
});
app.listen(3000, function() {
console.log('Server started on port 3000');
});
```
在上面的代码中,我们首先创建了一个mysql连接,并使用express框架创建了一个API接口,包括登录接口和获取用户信息接口。
在登录接口中,我们通过查询用户表来验证用户的登录信息,并将用户ID存储在session中。
在获取用户信息接口中,我们首先判断用户是否已经通过登录验证,并且是否存储了session信息。如果是,则通过session中存储的用户ID来查询用户信息,并将查询结果返回给前端。
需要注意的是,在实际开发中,我们需要对接口进行更加详细的参数验证和安全防护,以确保接口的安全性和稳定性。
阅读全文