1. 程式人生 > >node.js中 express-session的安裝使用及session的持久化

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

轉載。 https://blog.csdn.net/chaoyangsun/article/details/79240888

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);
  • 1

以上程式碼都在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;