什么是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
# 服务端
# 我们可以
# 中去
# 该用户
# 的是
# 客户端
# 是一个
# 也就是说
# 木已成舟
# 就会
# 是在
# 也有
# 是一种
# 太多
# 是基于
# 都能
# 两次
# 提出了
# 将其
# 购物车
相关文章:
网站制作报价单模板图片,小松挖机官方网站报价?
,在苏州找工作,上哪个网站比较好?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
如何基于PHP生成高效IDC网络公司建站源码?
如何用搬瓦工VPS快速搭建个人网站?
建站主机选购指南与交易推荐:核心配置解析
宝塔建站后网页无法访问如何解决?
建站主机选哪家性价比最高?
太平洋网站制作公司,网络用语太平洋是什么意思?
C++如何编写函数模板?(泛型编程入门)
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
建站之星3.0如何解决常见操作问题?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
广德云建站网站建设方案与建站流程优化指南
建站之星后台管理如何实现高效配置?
定制建站流程解析:需求评估与SEO优化功能开发指南
如何通过西部数码建站助手快速创建专业网站?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
定制建站价位费用解析与套餐推荐全攻略
成都网站制作报价公司,成都工业用气开户费用?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
如何在新浪SAE免费搭建个人博客?
香港服务器租用费用高吗?如何避免常见误区?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
如何快速启动建站代理加盟业务?
如何在IIS中新建站点并解决端口绑定冲突?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
建站之星后台管理:高效配置与模板优化提升用户体验
c# 在高并发场景下,委托和接口调用的性能对比
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
建站之星如何开启自定义404页面避免用户流失?
详解jQuery中基本的动画方法
如何打造高效商业网站?建站目的决定转化率
如何彻底删除建站之星生成的Banner?
建站之星安装后如何自定义网站颜色与字体?
宝塔建站助手安装配置与建站模板使用全流程解析
宝塔Windows建站如何避免显示默认IIS页面?
如何快速搭建高效简练网站?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
建站主机类型有哪些?如何正确选型
如何快速建站并高效导出源代码?
建站之星各版本价格是多少?
香港服务器选型指南:免备案配置与高效建站方案解析
常州自助建站工具推荐:低成本搭建与模板选择技巧
制作国外网站的软件,国外有哪些比较优质的网站推荐?
活动邀请函制作网站有哪些,活动邀请函文案?
如何快速生成橙子建站落地页链接?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。