Express   发布时间:2022-04-25  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了详解Node.js开发中的express-session大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

什么是session

session是保存在服务器端的会话。session的典型应用场景是用户登录某网站之后,将其登录信息放入session,在以后的每次请求中查询相应的登录信息以确保该用户合法。比如购物车等等经典场景

为什么要使用session

谈及session一般是在web应用的背景之下,我们知道web应用是基于http协议的,而http协议恰恰是一种无状态协议。也就是说,用户从A页面跳转到B页面会重新发送一次http请求,而服务端在返回响应的时候是无法获知该用户在请求B页面之前做了什么的。

而正是这种web动态化的需求,给http协议提出了一个难题:一个无状态的协议怎样才能关联两次连续的请求呢?也就是说无状态的协议怎样才能满足有状态的需求呢?

此时有状态是必然趋势而协议的无状态性也是木已成舟,因此我们需要一些方案来解决这个矛盾,来保持http连接状态,于是出现了cookie和session。

session与cookie的关系

上面提到解决http协议自身无状态的方式有cookie和session。二者都能记录状态,前者是将状态数据保存在客户端,后者则保存在服务端。

安全性

cookie将信息保存在客户端,如果不进行加密的话,无疑会暴露一些隐私信息,安全性很差,一般情况下敏感信息是经过加密后存储在cookie中,但很容易就会被窃取。而session只会将信息存储在服务端,如果存储在文件数据库中,也有被窃取的可能,只是可能性比cookie小了太多。

Session安全性方面比较突出的是存在会话劫持的问题,这是一种安全威胁,总体来讲,session的安全性要高于cookie。

express框架之session 内存存储

express-session 是基于express框专门用于处理session的中间件。session的认证机制离不开cookie,需要同时使用COokieParser 中间件。

var app = express();

app.use(cookieParser());
app.use(session({
secret: '12345',name: 'testapp',//这里的name值得是cookie的name,认cookie的name是:connect.sid
cookie: {maxAge: 80000 },//设置maxAge是80000ms,即80s后session和相应的cookie失效过期
resave: false,saveUninitialized: true,}));

app.get('/awesome',function(req,res){

if(req.session.lastPagE) {
console.log('Last page was: ' + req.session.lastPage + ".");
}
req.session.lastPage = '/awesome'; //每一次访问时,session对象的lastPage会自动的保存或更新内存中的session中去。
res.send("You're Awesome. and the session expired time is: " + req.session.cookie.maxAgE);
});

app.get('/raDical',res){
if (req.session.lastPagE) {
console.log('Last page was: ' + req.session.lastPage + ".");
}
req.session.lastPage = '/raDical';
res.send('what a raDical visit! and the session expired time is: ' + req.session.cookie.maxAgE);
});

app.get('/tubular',res){
if (req.session.lastPagE){
console.log("Last page was: " + req.session.lastPage + ".");
}

req.session.lastPage = '/tubular';
res.send('Are you a suffer? and the session expired time is: ' + req.session.cookie.maxAgE);
});

app.listen(5000);

大佬总结

以上是大佬教程为你收集整理的详解Node.js开发中的express-session全部内容,希望文章能够帮你解决详解Node.js开发中的express-session所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。