簡介
express-session是express中的一個處理session的中間件,可以說是express中最常見的中間件之一了.
由于會話管理依賴cookie的使用,所以它的api中有很多用于控制cookie的部分.
總的來說express-session有如下的特點:
本文中使用的版本為1.15.6.
安裝
npm install express-session --save
引入&使用
const express = require('express');const app = new express();const expressSession = require('express-session');// 使用express-sessionapp.use(expressSession({ secret:'hello world',// cookie簽名 這個屬性是必須的 具體配置和`cookie-parser`一樣 saveUninitialized:true, // 是否自動初始化 默認(rèn)為true resave:false,// 當(dāng)用戶session無變化的時候依然自動保存 cookie:{ // cookie的信息具體操作和`cookie-parser`一樣 maxAge:1800000// 30分鐘后過期 }, rolling:true// 每次請求的時候覆寫cookie}))會話簡介
在express-session文檔中有如下的一句說明:
Note Session data is not saved in the cookie itself, just the session ID. Session data is stored server-side.
Session中包含的數(shù)據(jù)不會保存在cookie中,僅僅是在cookie中保存了一個SessionId而已.實際的session的數(shù)據(jù)保存在服務(wù)端.
簡單理解就是一個Map,鍵對應(yīng)的是session id值保存在cookie中,值對應(yīng)的是用戶保存在服務(wù)端的數(shù)據(jù).
api介紹
參數(shù)
創(chuàng)建express-cookie參數(shù)基本分為兩種.
cookie設(shè)置一覽:
app.use(expressSession({ secret:'hello world', // cookie 簽名必須有否則會報錯 cookie:{ domain:<參數(shù)>, expires:<參數(shù)>, httpOnly:<參數(shù)>, path:<參數(shù)>, sameSite:<參數(shù)>, secure:<參數(shù)>, maxAge:1800000 }}));而這些對應(yīng)的參數(shù)就是服務(wù)端對于cookie的寫入?yún)?shù),至于各個參數(shù)是什么意思參考下面的文章:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie
express-session部分設(shè)置:
app.use(expressSession({ secret:'hello world', // cookie 簽名必須有否則會報錯 genid:function (request) { // 用于替換掉默認(rèn)ID生成的函數(shù) 第一個參數(shù)為reqeust return '隨機id' }, name:'connect.sid',// 每次響應(yīng)中向cookie中起始的內(nèi)容,默認(rèn)起始為`connect.sid`, proxy:true,// 對于cookie使用secure后,在傳遞的過程中相信反向代理服務(wù)器,默認(rèn)為undefined只相信正向代理 resave:true,// 在一次會話中無論是否session被改變都會進(jìn)行強制的儲存 rolling:true,// 在每次會話中的響應(yīng)中都覆寫一次cookie,重置倒計時 saveUninitialized:true,// 將一個新創(chuàng)建還未修改的會話進(jìn)行儲存,默認(rèn)為true store:object// 一個儲存對象,默認(rèn)使用的是`MemoryStore`這個存儲器 unset:'keep'// 控制沒有設(shè)置`req.session`時候的行為(使用delete刪除或者賦值null),默認(rèn)'keep'會話期間不會保留,'destroy'會話完成后刪除.}));
新聞熱點
疑難解答
圖片精選