node.js中 express-session的安裝使用及session的持久化
阿新 • • 發佈:2018-12-17
轉載。 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;