全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解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 express = require('express');
var session = require('express-session');
var cookieParser = require('cookie-parser');

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', function(req, 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', function(req, 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);

一旦我们将express-session中间件用use挂载后,我们可以很方便的通过req参数来存储和访问session对象的数据。req.session是一个JSON格式的JavaScript对象,我们可以在使用的过程中随意的增加成员,这些成员会自动的被保存到option参数指定的地方,默认即为内存中去。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# node express session  # node.js中express-session  # 服务端  # 我们可以  # 中去  # 该用户  # 的是  # 客户端  # 是一个  # 也就是说  # 木已成舟  # 就会  # 是在  # 也有  # 是一种  # 太多  # 是基于  # 都能  # 两次  # 提出了  # 将其  # 购物车 


相关文章: 宁波自助建站系统如何快速打造专业企业网站?  如何在IIS中新建站点并配置端口与IP地址?  如何选择香港主机高效搭建外贸独立站?  简历在线制作网站免费版,如何创建个人简历?  西安大型网站制作公司,西安招聘网站最好的是哪个?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何通过主机屋免费建站教程十分钟搭建网站?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  海南网站制作公司有哪些,海口网是哪家的?  制作网站的软件免费下载,免费制作app哪个平台好?  如何在Windows虚拟主机上快速搭建网站?  如何快速建站并高效导出源代码?  Swift开发中switch语句值绑定模式  建站org新手必看:2024最新搭建流程与模板选择技巧  网站制作报价单模板图片,小松挖机官方网站报价?  Android自定义控件实现温度旋转按钮效果  ,南京靠谱的征婚网站?  如何用PHP快速搭建CMS系统?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  C++中引用和指针有什么区别?(代码说明)  相册网站制作软件,图片上的网址怎么复制?  Android自定义listview布局实现上拉加载下拉刷新功能  如何通过云梦建站系统实现SEO快速优化?  建站之星如何优化SEO以实现高效排名?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  如何通过FTP服务器快速搭建网站?  如何快速生成高效建站系统源代码?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  Python lxml的etree和ElementTree有什么区别  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  广平建站公司哪家专业可靠?如何选择?  如何用5美元大硬盘VPS安全高效搭建个人网站?  如何确保西部建站助手FTP传输的安全性?  如何通过FTP空间快速搭建安全高效网站?  如何撰写建站申请书?关键要点有哪些?  浅析上传头像示例及其注意事项  c# 在高并发下使用反射发射(Reflection.Emit)的性能  如何快速搭建安全的FTP站点?  七夕网站制作视频,七夕大促活动怎么报名?  建站之星与建站宝盒如何选择最佳方案?  建站之星如何快速更换网站模板?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  制作国外网站的软件,国外有哪些比较优质的网站推荐?  已有域名如何快速搭建专属网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  5种Android数据存储方式汇总  网站制作服务平台,有什么网站可以发布本地服务信息? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。