user路由里面的代码
var express = require('express');
var router = express.Router();
var path = require('path');
var fs = require('fs');
/* 登录 */
router.post('/login', async (req, res, next) => {
var username = req.body.username
var password = req.body.password
var findJson = () => {
return new Promise((resolve, reject) => {
fs.readFile(path.join(__dirname, '../data/users.json'), function (err, data) {
if (err) {
resolve({ code: 500, msg: '登录失败' + err })
return console.error(err);
}
var users = data.toString();
users = JSON.parse(users);
// 查找用户
var user = users.find(function (item) {
return item.username === username && item.password === password;
});
if (user) {
var token = 'qwertyuiopasdfghjklzxcvbnm'
var loginUser = {
username,
avatar: 'http://localhost:5000/public/images/avatar.jpg',
city: '广东省深圳市',
phone: '12345678910'
}
resolve({ code: 200, data: { token, loginUser }, msg: '登录成功' });
} else {
resolve({ code: 500, msg: '账号或密码错误' });
}
})
})
}
var data = await findJson()
res.send(data)
});
/* 注册 */
router.post('/register', async (req, res, next) => {
var username = req.body.username
var password = req.body.password
var writeJson = () => {
return new Promise((resolve, reject) => {
fs.readFile(path.join(__dirname, '../data/users.json'), function (err, data) {
if (err) {
resolve({ code: 500, msg: '注册失败' + err })
return console.error(err);
}
var users = data.toString();
users = JSON.parse(users);
// 查找用户
var user = users.find((item) => item.username === username);
if (user) {
resolve({ code: 500, msg: '该用户已注册' })
} else {
users.push({ username, password })
var str = JSON.stringify(users);
fs.writeFile(path.join(__dirname, '../data/users.json'), str, function (err) {
if (err) {
resolve({ code: 500, msg: '注册失败' + err })
}
resolve({ code: 200, msg: '注册成功' });
})
}
})
})
}
var data = await writeJson()
res.send(data)
});
module.exports = router;
创建中间件路由拦截
// token校验
app.use((req, res, next) => {
if (req.url != '/user/login' && req.url != '/user/register' && !req.url.startsWith("/public")) {
let token = req.headers.authorization;
// 如果考验通过就next,否则就返回登陆信息不正确
if (token === undefined) {
res.send({ status: 200, msg: "令牌不能为空" })
} else if (token === 'qwertyuiopasdfghjklzxcvbnm') {
next();
} else {
res.send({ status: 200, msg: "令牌失效" })
}
} else {
next();
}
});
发送图片静态资源
app.get('/public/images/*', function (req, res) {
res.sendFile(__dirname + "/" + req.url);
})