思路:登录时候从后端拿取uuid进行jwt.sign加密发送给前端,前端拿着加密后的uuid保存到本地;首页每次需要执行操作时携带加密uuid到后端,后端以verify解密并验证,无误后与之数据库uuid进行匹配,随后返回与之有关信息.
app.post('/api/login', (req, res) => {
console.log(req.body);
var user = users.find(item => item.mobile == req.body.mobile && item.pwd == req.body.pwd);
if (!user) {
res.send({
code: 0,
message: '账号或者密码错误!'
})
return;
}
var token = jwt.sign({ uuid: user.uuid }, 'abc', {
expiresIn: 10,
})
console.log(token);
res.send({
code: 1,
token,
})
})
app.get('/api/user', checkToken, (req, res) => {
console.log(req.headers.uuid);
var user = users.find(item => item.uuid == req.headers.uuid);
res.send({
code: 1,
data: {
name: user.name,
mobile: user.mobile
}
})
})
function checkToken(req, res, next) {
jwt.verify(req.headers.token, 'abc', (err, data) => {
if (err) {
res.send({
code: 0,
message: 'token无效'
})
return;
}
req.headers.uuid = data.uuid;(data.uuid是验证无误后的uuid)
next();
})
}