如何正确的在节点中使用会话方法

  介绍

本篇文章给大家分享的是有关如何正确的在节点中使用会话方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>会话是什么

会话不就是会话嘛,那什么是会话呢?

会话是一个比连接粒度更大的概念,一次<代码>会话> 连接>

当用户在Web页面之间跳转时,存储在会话对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

当用户请求来自应用程序的Web页面时,如果该用户还没有会话,则Web服务器将自动创建一个会话对象。当会话过期或被放弃后,服务器将终止该会话。

说了这么多,我们先来看看这货吧。

如何正确的在节点中使用会话方法

原来会话中间件生成的会话是一个对象,里面包含了饼干信息。

<强>节点中会话的

首先,安装表达框架,cookieParser中间件,express-session中间件

npm 小姐:express ——保存   npm 小姐:cookie-parser ——保存   npm 小姐:express-session ——拯救

默认情况下,表达会话中间件是把会话信息存储在内存中,且需要用<代码>签名饼干> 秘钥> 错误:秘密选择所需课程

代码如下:

var  express =,要求(& # 39;表达# 39;);   var  cookieParser =,要求(& # 39;cookie-parser& # 39;);   var  session =,要求(& # 39;express-session& # 39;);      var  app =,表达()   app.use (cookieParser ())      const  hour =, 1000, *, 60, *, 60;   var  sessionOpts =, {   ,//设置密钥   ,秘密:& # 39;a  cool 秘密# 39;   ,//Forces 从而session 用be  saved  back 用,session 商店   ,重新保存:没错,   ,//Forces  a  session  that  is “uninitialized",用be  saved 用,商店。   ,saveUninitialized:没错,   ,//设置会话饼干名,,默认是connect.sid   ,关键:& # 39;myapp_sid& # 39;   ,//If  secure  is  set 用真的,,以及你access  your  site 配套;HTTP、,从而cookie  will  not  be 集。   ,饼干:{,maxAge: hour  *, 2,安全:,false }   }   app.use(会话(sessionOpts))      app.use(功能(要求的事情,,,,下一个),{   ,if  (req.url ===, & # 39;/favicon.ico& # 39;), {   ,返回   ,}      ,//同一个浏览器而言,要求是同一个   ,var  sess =, req.session;   ,console.log(税)      ,if  (sess.views), {   sess.views才能+ +;   ,}else  {   时间=sess.views 才能;1;   ,}   ,res.setHeader(& # 39;内容类型# 39;,,& # 39;text/html # 39;);   ,res.write (& # 39; & lt; p>视图:,& # 39;,+,sess.views  +, & # 39; & lt;/p> & # 39;);   ,res.end ();   });      app.listen (4000),

上面代码实现了一个简单的<代码>页面浏览计数功能。

运行上面代码,可以打开浏览器,不断刷新页面,观察节点程序中打印的税值。

我们发现,在同一个浏览器中刷新页面,控制台上打印的是同一个会话,只不过其中的观点的值变了,也就是说,多次http连接对应的是同一个会话。

<强>会话存入复述,

默认情况下,表达会话中间件是把会话信息存储在内存中,但在开发和生产期间,最好有一个持久化的,可扩展的数据存放你的会话数据.express社区已经创建了几个使用数据库的会话存储,包括MongoDB,复述,Memcached, PostgreSQL以及其他数据库。但低延迟的<代码>键/值存储>

首先,安装connect-redis模块

npm 小姐:connect-redis ——保存

代码如下:

var  express =,要求(& # 39;表达# 39;);   var  cookieParser =,要求(& # 39;cookie-parser& # 39;);   var  session =,要求(& # 39;express-session& # 39;);      var  RedisStore =,要求(& # 39;connect-redis& # 39;)(会话);      var  app =,表达()   app.use (cookieParser ())      var  options =, {   主持人:大敌;& # 39;127.0.0.1 # 39;   6379年,端口:   ,db: 1,,//, Database  index 用使用只Defaults 用复述,# 39;s  default  (0)。   ,前缀:& # 39;ID: & # 39;,//, Key  prefix  defaulting 用“捐:“   ,//通过:& # 39;aaa # 39;,//, Password  for  Redis 身份验证   }      const  hour =, 1000, *, 60, *, 60;   var  sessionOpts =, {   ,存储:new  RedisStore(选项)   ,//设置密钥   ,秘密:& # 39;a  cool 秘密# 39;   ,//Forces 从而session 用be  saved  back 用,session 商店   ,重新保存:没错,   ,//Forces  a  session  that  is “uninitialized",用be  saved 用,商店。   ,saveUninitialized:没错,   ,//设置会话饼干名   ,关键:& # 39;myapp_sid& # 39;   ,//If  secure  is  set 用真的,,以及你access  your  site 配套;HTTP、,从而cookie  will  not  be 集。   ,饼干:{,maxAge: hour  *, 8日,安全:,false }   }   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何正确的在节点中使用会话方法