express教學(xué)(6) 使用session

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

客戶端瀏覽器訪問服務(wù)器的時(shí)候,服務(wù)器把客戶端信息以某種形式記錄在服務(wù)器上,這就是session??蛻舳藶g覽器再次訪問時(shí)只需要從該Session中查找該客戶的狀態(tài)就可以了。

如果說Cookie機(jī)制是通過檢查客戶身上的“通行證”來確定客戶身份的話,那么session機(jī)制就是通過檢查服務(wù)器上的“客戶明細(xì)表”來確認(rèn)客戶身份。

session相當(dāng)于程序在服務(wù)器上建立的一份客戶檔案,客戶來訪的時(shí)候只需要查詢客戶檔案表就可以了。

實(shí)用方法:

1.安裝express-session

npm ?install ?express-session ?--save-dev ???//注意-g無效

2.app.js中

var session = require('express-session');

app.use(cookieParser()); ????//---必須在此行下面添加

------------------------------------------------------------

app.use(session({secret: 'recommand 128 bytes random string',

//---建議使用128個(gè)字符的隨機(jī)字符串

cookie: { maxAge: 20 * 60 * 1000 },

//---cookie生存周期20*60秒

resave: true,

//---cookie之間的請(qǐng)求規(guī)則,假設(shè)每次登陸,就算會(huì)話存在也重新保存一次

saveUninitialized: true

//---強(qiáng)制保存未初始化的會(huì)話到存儲(chǔ)器

}));

3.路由實(shí)用session

if(rs){

varloginbean = {};

loginbean.id=rs._id;

loginbean.nicheng = rs.nicheng;

loginbean.role = rs.role;

req.session.loginbean = loginbean;

res.redirect('/'); ???//---跳轉(zhuǎn)回index頁

}

4.ejs中識(shí)別session

router.get('/', function(req, res, next) {

res.locals.loginbean = req.session.loginbean;

res.render('index', {});

});

5.注銷session

router.get('/logout', function(req, res, next) {

delete req.session.loginbean;

res.redirect('/');

});

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

相關(guān)閱讀更多精彩內(nèi)容

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