node.js中 express-session的安装使用及session的持久化

1、安装express-session及session持久化中间件

npm install express-session

session持久化插件安装说明

mac、linux平台使用session-file-store npm install session-file-store
win平台使用nedb-session-store npm install nedb-session-store

2、导入及创建中间件
mac

// 导入
const session = require("express-session");
const FileStore = require('session-file-store')(session);
// 创建 session 中间件
const sessionMiddleware = session({ 
    store:new FileStore(),//数据持久化方式,这里表示本地文件存储
    secret: 'keyboard cat', //加密key 可以随意书写
    cookie: { maxAge: 60000 }//两次请求的时间差 即超过这个时间再去访问 session就会失效
 }) 

win

var session = require("express-session")
var NedbStore = require('nedb-session-store')( session );
const sessionMiddleware = session({
    secret: "fas fas",
    resave: false,
    saveUninitialized: false,
    cookie: {
      path: '/',
      httpOnly: true,
      maxAge: 365 * 24 * 60 * 60 * 1000   // e.g. 1 year
    },
    store: new NedbStore({
      filename: 'path_to_nedb_persistence_file.db'
    })
  })

3、为express应用程序加入session中间件

app.use(sessionMiddleware);

以上代码都在app.js里面!

4、session在路由中的使用

router.get('/', function(req, res) { 
  const session = req.session;
  session.xxx //操作session
   });

使用样例

后台index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  const session = req.session;
  if (!session.num) {
    session.num = 0;
  }
  console.log(++session.num);
  res.render('index', { title: `Express这是第 ${session.num} 次访问` });
});

module.exports = router;

如果在设置的时效内,即使关了服务器再次打开,去别的界面也能访问session.num!
users.js

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
  const session = req.session;
  if(!session.num){
    session.num = 0;
  }
  if(session.user){
      let name = session.name;
       res.send(name + "第" + ++session.num + "次登录");
  }else{
      res.send("还没有登录");
});

module.exports = router;

猜你喜欢

转载自blog.csdn.net/chaoyangsun/article/details/79240888