express-session()
定義:
-
session()
是一個(gè)中間件函數(shù)奢入。- 用于創(chuàng)建一個(gè)session對象
- session對象用于管理HTTP狀態(tài)
注意session數(shù)據(jù)在cookie中只存儲session ID殖氏。
session數(shù)據(jù)存儲在服務(wù)器端力麸。
cookie存儲在瀏覽器端挚冤。
-
cookie什么時(shí)候存儲在瀏覽器端减噪?
- 用戶第一次發(fā)起請求
- 當(dāng)服務(wù)器區(qū)第一次做出響應(yīng)的時(shí)候致扯,服務(wù)器通過session在用戶
- 用戶以后的每次請求都會攜帶cookie
語法:
session({options})
session({選項(xiàng)對象})
session({
secret: 'string', //密要
cookie: { //安插用戶瀏覽器中的后門(鍵值對)
path: '/',
httpOnly: true,
secure: false,
maxAge: null //使用毫秒數(shù)設(shè)置cookie的有效期 5分鐘或者1分鐘
},
resave:false,
saveUninitialized:true
})
示例:
npm install express-session
const session = require('express-session')
app.use()
session 讀:賽神
1.什么是session
- session指HTTP客戶端和服務(wù)端的會話。(瀏覽器 <==> 服務(wù)器)
2.Session的用途
- 1.HTTP是無狀態(tài)的
- 2.Session用于處理HTTP通信的狀態(tài)問題
3.Session和cookie的區(qū)別
- 1.session存儲服務(wù)器的內(nèi)存里崇渗。cookie存儲在客戶端的瀏覽器里
- 2.瀏覽器端的cookie是通過服務(wù)端session創(chuàng)建的
4.在服務(wù)端創(chuàng)建session的語法
app.use(session({
secret:'任意字符串', //secret:用于創(chuàng)建sessionID(密鑰)字逗,sessionID存儲在瀏覽器端的cookie里
cokkie:{
maxAge:毫秒數(shù), //maxAge:決定了cookie的有效期
},
resave:布爾值, //當(dāng)session發(fā)生變化時(shí)是否需要重新存儲京郑。建議false
saveUninitialized:布爾值 //如果為完成初始化是否創(chuàng)建session宅广,建議true
}))
5.express-session模塊如何創(chuàng)建cookie?
- app.use(session({})) 創(chuàng)建一個(gè)session對象些举,cookie是通過session對象創(chuàng)建的
6.記住一句話
- 1.在服務(wù)端創(chuàng)建一個(gè)session跟狱,就在瀏覽器端植入了一個(gè)cookie
- 2.瀏覽器端的cookie只存儲sessionID,不存儲任何其他數(shù)據(jù)
- 3.sessionID是通過
secret
屬性生成一個(gè)加密的隨機(jī)的唯一的ID - 4.只要cookie植入完成户魏,瀏覽器端發(fā)起的任何請求都會自動(dòng)攜帶sessionID
7.所有的中間件函數(shù)都必須要執(zhí)行next()函數(shù):跳轉(zhuǎn)到下一個(gè)中間件函數(shù)
8.req.session的用途是什么驶臊?
- req.session用于向服務(wù)端的Session對象添加額外信息。