Session使用
安装express-session
npm install express-session
入口文件配置:aap.js
// 引入 session 中间件
const expressSession = require('express-session');
app.use(expressSession({
secret: 'notepad', // secret 属性的值可以是任意字符串
saveUninitialized: true, // 强制将未初始化的session存储
resave: false, // 强制保存session即使它并没有变化
cookie: {
maxAge: 1800000
},
rolling: true, // 在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
}));
使用
存储
// 用户登陆方法
let loginpost = async(req, res) => {
const email = req.body.email
let password = req.body.password
const result = await db.table('user').where({email:email}).find();
if(result){
const salt = result.salt
password = md5(password + salt)
if(password != result.password){
return res.json({
code: 0,
msg: '密码错误,请重新登陆'
})
}
// 存储用户信息
req.session.LognUser = result;
return res.json({
code: 1,
msg: '登陆成功'
})
} else{
return res.json({
code: 0,
msg: '登陆失败,当前用户不存在'
})
}
}
校验页面是否有登陆
// 校验所有路由跳转
app.all('*', async(req, res, next) => {
// 判断是否登陆页或者注册页
if(req.url == '/user/login' || req.url == '/user/register') {
next();
} else if (req.session.LognUser) {
let LongUser = req.session.LognUser
// 校验用户信息
const result = await db.table('user').find(LongUser.id);
if(JSON.stringify(result) != "{}") {
// 重新存储用户信息
req.session.LognUser = result;
next();
} else {
res.redirect('/user/login');
}
} else {
res.redirect('/user/login');
}
})
清除方法destroy()
let logout = async (req, res) => {
// 清除用户信息
req.session.destroy()
return res.json({
code: 1,
msg: '退出成功'
})
}