express-session()
定義:
-
session()是一個(gè)中間件函數(shù)。- 用于創(chuàng)建一個(gè)session對(duì)象
- session對(duì)象用于管理HTTP狀態(tài)
注意session數(shù)據(jù)在cookie中只存儲(chǔ)session ID。
session數(shù)據(jù)存儲(chǔ)在服務(wù)器端。
cookie存儲(chǔ)在瀏覽器端。
-
cookie什么時(shí)候存儲(chǔ)在瀏覽器端?
- 用戶第一次發(fā)起請(qǐng)求
- 當(dāng)服務(wù)器區(qū)第一次做出響應(yīng)的時(shí)候,服務(wù)器通過(guò)session在用戶
- 用戶以后的每次請(qǐng)求都會(huì)攜帶cookie
語(yǔ)法:
session({options})
session({選項(xiàng)對(duì)象})
session({
secret: 'string', //密要
cookie: { //安插用戶瀏覽器中的后門(鍵值對(duì))
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ù)端的會(huì)話。(瀏覽器 <==> 服務(wù)器)
2.Session的用途
- 1.HTTP是無(wú)狀態(tài)的
- 2.Session用于處理HTTP通信的狀態(tài)問(wèn)題
3.Session和cookie的區(qū)別
- 1.session存儲(chǔ)服務(wù)器的內(nèi)存里。cookie存儲(chǔ)在客戶端的瀏覽器里
- 2.瀏覽器端的cookie是通過(guò)服務(wù)端session創(chuàng)建的
4.在服務(wù)端創(chuàng)建session的語(yǔ)法
app.use(session({
secret:'任意字符串', //secret:用于創(chuàng)建sessionID(密鑰),sessionID存儲(chǔ)在瀏覽器端的cookie里
cokkie:{
maxAge:毫秒數(shù), //maxAge:決定了cookie的有效期
},
resave:布爾值, //當(dāng)session發(fā)生變化時(shí)是否需要重新存儲(chǔ)。建議false
saveUninitialized:布爾值 //如果為完成初始化是否創(chuàng)建session,建議true
}))
5.express-session模塊如何創(chuàng)建cookie?
- app.use(session({})) 創(chuàng)建一個(gè)session對(duì)象,cookie是通過(guò)session對(duì)象創(chuàng)建的
6.記住一句話
- 1.在服務(wù)端創(chuàng)建一個(gè)session,就在瀏覽器端植入了一個(gè)cookie
- 2.瀏覽器端的cookie只存儲(chǔ)sessionID,不存儲(chǔ)任何其他數(shù)據(jù)
- 3.sessionID是通過(guò)
secret屬性生成一個(gè)加密的隨機(jī)的唯一的ID - 4.只要cookie植入完成,瀏覽器端發(fā)起的任何請(qǐng)求都會(huì)自動(dòng)攜帶sessionID
7.所有的中間件函數(shù)都必須要執(zhí)行next()函數(shù):跳轉(zhuǎn)到下一個(gè)中間件函數(shù)
8.req.session的用途是什么?
- req.session用于向服務(wù)端的Session對(duì)象添加額外信息。