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: '退出成功'
    })
}
powered by GitbookEdit Time: 2023-04-08 10:28:32