Koa2中Session koa-session的使用

大神應(yīng)用session登錄文章點(diǎn)擊直達(dá)

一、Koa-Session簡單介紹

session是另一種記錄客戶狀態(tài)的機(jī)制,不同的是Cookie保存在客戶端瀏覽器中,而session保存在服務(wù)器上。

二、Session的工作流程

當(dāng)瀏覽器訪問服務(wù)器并發(fā)送第一次請求時(shí),服務(wù)器端會創(chuàng)建一個(gè)session對象,生成一個(gè)類似于key,value的鍵值對, 然后將key(cookie)返回到瀏覽器(客戶)端,瀏覽器下次再訪問時(shí),攜帶key(cookie),找到對應(yīng)的session(value)。 客戶的信息都保存在session中

三、koa-session的使用:

1.安裝 koa-session

npm install koa-session --save

2.引入express-session

const session = require('koa-session');

3.設(shè)置官方文檔提供的中間件

const session_signed_key = ["some secret hurr"];  // 這個(gè)是配合signed屬性的簽名key
const session_config = {
    key: 'koa:sess', /**  cookie的key。 (默認(rèn)是 koa:sess) */
    maxAge: 4000,   /**  session 過期時(shí)間,以毫秒ms為單位計(jì)算 。*/
    autoCommit: true, /** 自動提交到響應(yīng)頭。(默認(rèn)是 true) */
    overwrite: true, /** 是否允許重寫 。(默認(rèn)是 true) */
    httpOnly: true, /** 是否設(shè)置HttpOnly,如果在Cookie中設(shè)置了"HttpOnly"屬性,那么通過程序(JS腳本、Applet等)將無法讀取到Cookie信息,這樣能有效的防止XSS攻擊。  (默認(rèn) true) */
    signed: true, /** 是否簽名。(默認(rèn)是 true) */
    rolling: true, /** 是否每次響應(yīng)時(shí)刷新Session的有效期。(默認(rèn)是 false) */
    renew: false, /** 是否在Session快過期時(shí)刷新Session的有效期。(默認(rèn)是 false) */
};

我們需要關(guān)注這幾個(gè)配置:

  • renew rolling
    這兩個(gè)都可以在用戶訪問的過程中刷新有效期,不至于讓用戶訪問過程中Session過期成為未登錄狀態(tài)

  • signed
    這個(gè)是對客戶端Cookie的簽名,也就是用一個(gè)特點(diǎn)的字符加密,保證客戶端Cookie不會被偽造出來

  • httpOnly
    打開這個(gè)使得通過程序(JS腳本、Applet等)無法讀取Cookie,大大提高了安全性

  • maxAge
    以ms為單位的過期時(shí)間

4.使用

設(shè)置值 ctx.session.username = "張三";
獲取值 ctx.session.username

四、Koa中Cookie和Session區(qū)別

1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。

2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙
考慮到安全應(yīng)當(dāng)使用session。

3、session會在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會比較占用你服務(wù)器的性能
考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE。

4、單個(gè)cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容