天天看點

Koa Session 的使用

一、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。