express session 会话管理

2018-08-25  本文已影响0人  l4u

安装session 包并引入:

const session = require('express-session') // session 插件

const Store = require('express-mysql-session') // session 插件

入口设置session:

app.use(session({

  secret: 'vue',

  name: 'SESSION', // 这里的name值得是cookie的name,默认cookie的name是:connect.sid

  cookie: {maxAge: 24 * 3600}, // 设置maxAge是80000ms,即80s后session和相应的cookie失效过期

  resave: true, // 是否允许session重新设置

  rolling: true, // 是否按照原设定的maxAge值重设session同步到cookie中

  saveUninitialized: false, // 是否设置session在存储容器中可以给修改

  store: new Store({

    host: 'localhost',

    user: 'root',

    password: 'root',

    port: '3306',

    database: 'test'

  })

}))

全局请求添加验证:

app.all('*', function (req, res, next) {

  var url = req.originalUrl// 获取浏览器中当前访问的nodejs路由地址

  if (url === '/api/user/login' || (url === '/api/user/addUser') || (url === '/api/user/upload')) {

    next()

  } else {

    console.log('req.session.sid', req.session.sid)

    if (req.session.sid) { // 判断用户是否登录

      next()

    } else {

      res.json({

        responseCode: 1000,

        responseMsg: '暂无权限'

      })

    }

  }

})

调接口使用:

// 查看内容列表

router.get('/getList', (req, res)=> {

var user = req.session.sid

  console.log('user', user)

var sql = $sql.getData.getList + $sql.getData.getCount

  var params = req.query

console.log('getListparams', params)

console.log('getListparamsid', req.id)

conn.query(sql, [user, parseInt((params.pageNumber - 1)* params.pageSize), parseInt(params.pageSize), user], function (err, result) {

console.log('result', JSON.stringify(result))

if (err) {

console.log(err)

}

if (result.length) {

jsonWrite(res, {list: result[0], total: result[1][0].total|| 0})

}

})

})

上一篇 下一篇

猜你喜欢

热点阅读