node.js 中间件express-session使用详解

发布时间 - 2026-01-11 01:12:37    点击率:

本文介绍的关于node.js中间件express-session的相关内容,分享出来供大家从参考学习,下面来一起看看详细的介绍:

一、为什么使用session?

session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存。

当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截。

session可以和Redis或者数据库等结合做持久化操作,当服务器挂掉时也不会导致某些客户信息(购物车)丢失。

二、session的工作流程:

当浏览器访问服务器并发送第一次请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对, 然后将key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带key(cookie),找到对应的session(value) 。 客户的信息都保存在session中。

三、express-session的常用参数:

secret:一个String类型的字符串,作为服务器端生成session的签名。

name:返回客户端的key的名称,默认为connect.sid,也可以自己设置。

resave:(是否允许)当客户端并行发送多个请求时,其中一个请求在另一个请求结束时对session进行修改覆盖并保存。

默认为true。但是(后续版本)有可能默认失效,所以最好手动添加。

saveUninitialized:初始化session时是否保存到存储。默认为true, 但是(后续版本)有可能默认失效,所以最好手动添加。

cookie:设置返回到前端key的属性,默认值为{ path: ‘/', httpOnly: true, secure: false, maxAge: null }

express-session的一些方法:

Session.destroy() :删除session,当检测到客户端关闭时调用。

Session.reload() :当session有修改时,刷新session。

Session.regenerate() :将已有session初始化。

Session.save() :保存session。

四、示例demo

//app.js中添加如下代码(已有的不用添加)
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');

app.use(cookieParser('sessiontest'));
app.use(session({
 secret: 'sessiontest',//与cookieParser中的一致
 resave: true,
 saveUninitialized:true
}));
//修改router/index.js,第一次请求时我们保存一条用户信息。
router.get('/', function(req, res, next) {
 var user={
  name:"Chen-xy",
  age:"22",
  address:"bj"
 }
 req.session.user=user;
 res.render('index', {
  title: 'the test for nodejs session' ,
  name:'sessiontest'
 });
});
//修改router/users.js,判断用户是否登陆。
router.get('/', function(req, res, next) {
 if(req.session.user){
  var user=req.session.user;
  var name=user.name;
  res.send('你好'+name+',欢迎来到我的家园。');
 }else{
  res.send('你还没有登录,先登录下再试试!');
 }
});

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# node  # express  # session  # nodejs  # express中间件  # 中间件  # Node.js使用Middleware中间件教程详解  # node.js express和koa中间件机制和错误处理机制  # node.js使用express-fileupload中间件实现文件上传  # 浅谈node.js中间件有哪些类型  # 浅谈Node.js 中间件模式  # node.js中路由  # get请求和post请求的参数详解  # node.js中express中间件body-parser的介绍与用法详解  # node.js cookie-parser 中间件介绍  # Node.js的中间件及使用方法详解  # 客户端  # 有可能  # 默认为  # 好了  # 相关内容  # 多个  # 已有  # 你还  # 购物车  # 这篇文章  # 其中一个  # 谢谢大家  # 欢迎来到  # 类似于  # 创建一个  # 结束时  # 值为  # 下次再  # 再试  # 键值 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在IIS服务器上快速部署高效网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何在万网ECS上快速搭建专属网站?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  奇安信“盘古石”团队突破 iOS 26.1 提权  node.js报错:Cannot find module 'ejs'的解决办法  如何为不同团队 ID 动态生成多个“认领值班”按钮  jQuery中的100个技巧汇总  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  高防服务器租用指南:配置选择与快速部署攻略  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何实现API版本控制_Laravel版本化API设计方案  如何快速查询网址的建站时间与历史轨迹?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  PHP正则匹配日期和时间(时间戳转换)的实例代码  使用C语言编写圣诞表白程序  Laravel如何创建自定义Facades?(详细步骤)  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  如何用IIS7快速搭建并优化网站站点?  C++时间戳转换成日期时间的步骤和示例代码  北京专业网站制作设计师招聘,北京白云观官方网站?  如何在IIS中新建站点并配置端口与物理路径?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  如何实现建站之星域名转发设置?  如何在阿里云域名上完成建站全流程?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  如何在VPS电脑上快速搭建网站?  Bootstrap整体框架之JavaScript插件架构  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  java ZXing生成二维码及条码实例分享  网站建设整体流程解析,建站其实很容易!  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel如何自定义错误页面(404, 500)?(代码示例)  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  浅析上传头像示例及其注意事项  如何用JavaScript实现文本编辑器_光标和选区怎么处理  如何用低价快速搭建高质量网站?  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  Laravel定时任务怎么设置_Laravel Crontab调度器配置  长沙企业网站制作哪家好,长沙水业集团官方网站?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  如何制作一个表白网站视频,关于勇敢表白的小标题?