一、Session 簡單介紹
session 是另一種記錄客戶狀态的機制,
不同的是 Cookie 儲存在用戶端浏覽器中,而session 儲存在伺服器上。
二、Session 的工作流程
當浏覽器通路伺服器并發送第一次請求時,伺服器端會建立一個 session 對象,生
成一個類似于 key,value 的鍵值對, 然後将 key(cookie)傳回到浏覽器(客戶)端,浏覽
器下次再通路時,攜帶 key(cookie),找到對應的 session(value)。 客戶的資訊都儲存
在 session 中
三、koa-session 的使用:
1.安裝 express-session
npm install koa-session --save
2.引入 express-session
const session = require('koa-session');
3.設定官方文檔提供的中間件
app.keys = ['some secret hurr'];
const CONFIG = {
key: 'koa:sess', //cookie key (default is koa:sess)
maxAge: 86400000, // cookie 的過期時間 maxAge in ms (default is 1 days)
overwrite: true, //是否可以 overwrite (預設 default true)
httpOnly: true, //cookie 是否隻有伺服器端可以通路 httpOnly or not (default true)
signed: true, //簽名預設 true
rolling: false, //在每次請求時強行設定 cookie,這将重置 cookie 過期時間(預設:false)
renew: false, //(boolean) renew session when session is nearly expired,
};
app.use(session(CONFIG, app));
4.使用
設定值 ctx.session.username = "張三";
擷取值 ctx.session.username
四、Cookie 和 Session 差別
1、cookie 資料存放在客戶的浏覽器上,session 資料放在伺服器上。
2、cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并進行 COOKIE 欺騙
考慮到安全應當使用 session。
3、session 會在一定時間内儲存在伺服器上。當通路增多,會比較占用你伺服器的性能
考慮到減輕伺服器性能方面,應當使用 COOKIE。
4、單個 cookie 儲存的資料不能超過 4K,很多浏覽器都限制一個站點最多儲存 20 個 cookie。