session是一种记录客户状态的机制,和Cookie不同的时 Cookie保存在客户端浏览器中,而session保存在服务器上。
客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么session机制就是通过检查服务器上的“客户明细表”来确认客户身份。
session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
实用方法:
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个字符的随机字符串
cookie: { maxAge: 20 * 60 * 1000 },
//---cookie生存周期20*60秒
resave: true,
//---cookie之间的请求规则,假设每次登陆,就算会话存在也重新保存一次
saveUninitialized: true
//---强制保存未初始化的会话到存储器
}));
3.路由实用session
if(rs){
varloginbean = {};
loginbean.id=rs._id;
loginbean.nicheng = rs.nicheng;
loginbean.role = rs.role;
req.session.loginbean = loginbean;
res.redirect('/'); //---跳转回index页
}
4.ejs中识别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('/');
});