一、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。
const session = require('koa-session');
//配置session的中間件
app.keys = ['some secret hurr']; /*cookie的簽名*/
const CONFIG = {
key: 'koa:sess', /** 默認 */
maxAge: 10000, /* cookie的過期時間 【需要修改】 */
overwrite: true, /** (boolean) can overwrite or not (default true) 沒有效果,默認 */
httpOnly: true, /** true表示只有服務器端可以獲取cookie */
signed: true, /** 默認 簽名 */
rolling: true, /** 在每次請求時強行設置 cookie,這將重置 cookie 過期時間(默認:false) 【需要修改】 */
renew: false, /** (boolean) renew session when session is nearly expired 【需要修改】*/
};
app.use(session(CONFIG, app));
設置值 ctx.session.username = "張三"; 獲取值 ctx.session.username