Express Session的使用

Session简单介绍

session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。

Session的用途:
session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存。
当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截。
session可以和Redis或者数据库等结合做持久化操作,当服务器挂掉时也不会导致某些客户信息(购物车)
丢失。

Session的工作流程

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

express-session的使用

1.安装 express-session

cnpm install express-session --save

2.引入express-session

var session = require("express-session");

3.设置官方文档提供的中间件

app.use(session({secret: 'keyboard cat',resave: true,saveUninitialized: true}))

4.使用

设置值 req.session.username = "张三";
获取值 req.session.username

express-session 使用demo:

    /** 1.安装  express-sessioncnpm install express-session  --save*** 2.引入var session = require("express-session");3.设置官方文档提供的中间件app.use(session({secret: 'keyboard cat',resave: false,saveUninitialized: true}))4.使用设置值req.session.username = "张三";获取值 req.session.username* */var express = require("express");var app = express();var session = require("express-session");//配置中间件app.use(session({secret: 'keyboard cat',resave: false,saveUninitialized: true//cookie: { secure: true }   /*secure https这样的情况才可以访问cookie*/}))app.get("/",function(req,res){//获取sesssionif(req.session.userinfo){  /*获取*/res.send('你好'+req.session.userinfo+'欢迎回来');}else{res.send('未登录');}});app.get("/login",function(req,res){req.session.userinfo="zhangsan111"; /*设置session*/res.send('登录成功');});app.get("/news",function(req,res){//获取sesssionif(req.session.userinfo){  /*获取*/res.send('你好'+req.session.userinfo+'欢迎回来 news');}else{res.send('未登录 news');}});app.listen(3000);

express-session的常用参数

    app.use(session({secret: '12345',name: 'name',cookie: {maxAge: 60000},resave: false,saveUninitialized: true}));

Session 中间件里面的参数的demo:

    /** 1.安装  express-sessioncnpm install express-session  --save*** 2.引入var session = require("express-session");3.设置官方文档提供的中间件app.use(session({secret: 'keyboard cat',resave: false,saveUninitialized: true}))4.使用设置值req.session.username = "张三";获取值 req.session.username* */var express = require("express");var app = express();var session = require("express-session");//配置中间件app.use(session({secret: 'this is string key',   // 可以随便写。 一个 String 类型的字符串,作为服务器端生成 session 的签名name:'session_id',/*保存在本地cookie的一个名字 默认connect.sid  可以不设置*/resave: false,   /*强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false。*/saveUninitialized: true,   //强制将未初始化的 session 存储。  默认值是true  建议设置成truecookie: {maxAge:5000    /*过期时间*/},   /*secure https这样的情况才可以访问cookie*///设置过期时间比如是30分钟,只要游览页面,30分钟没有操作的话在过期rolling:true //在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)}))app.get("/",function(req,res){//获取sesssionif(req.session.userinfo){  /*获取*/res.send('你好'+req.session.userinfo+'欢迎回来');}else{res.send('未登录');}});app.get("/login",function(req,res){req.session.userinfo='张三222';res.send('登录成功');});app.get("/news",function(req,res){//获取sesssionif(req.session.userinfo){  /*获取*/res.send('你好'+req.session.userinfo+'欢迎回来 news');}else{res.send('未登录 news');}});app.listen(3000);

express-session的常用方法

    req.session.destroy(function(err){ /*销毁 session*/}) req.session.username='张三'; //设置 sessionreq.session.username //获取 sessionreq.session.cookie.maxAge=0; //重新设置 cookie 的过期时间

express-session的常用方法的demo:

    /** 1.安装  express-sessioncnpm install express-session  --save*** 2.引入var session = require("express-session");3.设置官方文档提供的中间件app.use(session({secret: 'keyboard cat',resave: false,saveUninitialized: true}))4.使用设置值req.session.username = "张三";获取值 req.session.username* */var express = require("express");var app = express();var session = require("express-session");//配置中间件app.use(session({secret: 'this is string key',   // 可以随便写。 一个 String 类型的字符串,作为服务器端生成 session 的签名name:'session_id',/*保存在本地cookie的一个名字 默认connect.sid  可以不设置*/resave: false,   /*强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false。*/saveUninitialized: true,   //强制将未初始化的 session 存储。  默认值是true  建议设置成truecookie: {maxAge:1000*30*60    /*过期时间*/},   /*secure https这样的情况才可以访问cookie*///设置过期时间比如是30分钟,只要游览页面,30分钟没有操作的话在过期rolling:true //在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)}))app.get("/",function(req,res){//获取sesssionif(req.session.userinfo){  /*获取*/res.send('你好'+req.session.userinfo+'欢迎回来');}else{res.send('未登录');}});app.get("/login",function(req,res){req.session.userinfo='张三222';res.send('登录成功');});app.get("/loginOut",function(req,res){//req.session.cookie.maxAge=0;  /*改变cookie的过期时间*///销毁req.session.destroy(function(err){console.log(err);})res.send('退出登录成功');});app.get("/news",function(req,res){//获取sesssionif(req.session.userinfo){  /*获取*/res.send('你好'+req.session.userinfo+'欢迎回来 news');}else{res.send('未登录 news');}});app.listen(3000);

负载均衡配置Session,把Session保存到数据库里面

    1.需要安装 express-session 和 connect-mongo 模块2.引入模块var session = require("express-session");const MongoStore = require('connect-mongo')(session);3.配置中间件app.use(session({secret: 'keyboard cat',resave: false,saveUninitialized: true,rolling:true,cookie:{maxAge:100000},store: new MongoStore({url: 'mongodb://127.0.0.1:27017/student',touchAfter: 24 * 3600 // time period in seconds})}))

Session存储到mongodb中的demo:

/** 1.需要安装 express-session 和 connect-mongo 模块cnpm install express-session  --savecnpm install connect-mongo  --save2.引入var session = require("express-session");var  MongoStore  = require("connect-mongo")(session);3.设置官方文档提供的中间件app.use(session({secret: 'keyboard cat',resave: false,saveUninitialized: true,store:new MongoStore({url: 'mongodb://127.0.0.1:27017/student',数据库的地址touchAfter: 24 * 3600   time period in seconds})}))4.使用设置值req.session.username = "张三";获取值 req.session.username* */var express = require("express");var app = express();var session = require("express-session");var  MongoStore  = require("connect-mongo")(session);//配置中间件app.use(session({secret: 'this is string key',   // 可以随便写。 一个 String 类型的字符串,作为服务器端生成 session 的签名name:'session_id',/*保存在本地cookie的一个名字 默认connect.sid  可以不设置*/resave: false,   /*强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false。*/saveUninitialized: true,   //强制将未初始化的 session 存储。  默认值是true  建议设置成truecookie: {maxAge:1000*30*60    /*过期时间*/},   /*secure https这样的情况才可以访问cookie*/rolling:true,//在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)store:new MongoStore({url: 'mongodb://127.0.0.1:27017/shop',  //数据库的地址touchAfter: 24 * 3600   //time period in seconds  通过这样做,设置touchAfter:24 * 3600,您在24小时内只更新一次会话,不管有多少请求(除了在会话数据上更改某些内容的除外)})}))app.get("/",function(req,res){//获取sesssionif(req.session.userinfo){  /*获取*/res.send('你好'+req.session.userinfo+'欢迎回来');}else{res.send('未登录');}});app.get("/login",function(req,res){req.session.userinfo='张三222';res.send('登录成功');});app.get("/loginOut",function(req,res){//req.session.cookie.maxAge=0;  /*改变cookie的过期时间*///销毁req.session.destroy(function(err){console.log(err);})res.send('退出登录成功');});app.get("/news",function(req,res){//获取sesssionif(req.session.userinfo){  /*获取*/res.send('你好'+req.session.userinfo+'欢迎回来 news');}else{res.send('未登录 news');}});app.listen(3000);

Cookie和Session区别

1、cookie 数据存放在客户的浏览器上,session 数据放在服务器上。

2、cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗 考虑到安全应当使用 session。

3、session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用 COOKIE。

4、单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。

Express Session的使用相关推荐

  1. Nodejs进阶:express+session实现简易身份认证

    本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 文档概览 本文基于express.express-session ...

  2. Express Session 的基本使用

    一. Session 简单介绍 session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上. Cookie 数据存放在客户的浏览器上, ...

  3. node Error: Most middleware (like session) is no longer bundled with Express and must be installed

    今天的express项目连接mongodb数据库的时候,报了上面的错.大概的意思就是说大部分的中间件(像session)这样的不再跟express一起安装了.找了一些答案,如下: 答案:在expres ...

  4. express+socket.io 共享session

    express下socket.io使用session验证用户 作者: littlejim 时间: April 23, 2015 分类: node.js express下使用socket.io来传输用户 ...

  5. 使用express框架时,用MongoDB存放session时,出现错误,解决方法

    使用express框架时,用MongoDB存放session时,出现错误如下: D:\WorkSpace\nodejs\user\node_modules\connect-mongo\lib\conn ...

  6. Node.js session 存储的几种方法

    2019独角兽企业重金招聘Python工程师标准>>> Since the accepted answer is only connecting to remote hosts, i ...

  7. 我的node+express小例子

    启动index.js: var express = require("express"); var path = require("path"); var op ...

  8. TWaver HTML5 + Node.js + express + socket.io + redis(六)

    接上一篇TWaver HTML5 + Node.js + express + socket.io + redis(五), 这一篇将讲解如何用模版生成html页面, 如何验证用户登录, 您将了解到: 1 ...

  9. node.js Web应用框架Express入门指南

    node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门 ...

  10. 30天了解30种技术系列---(1)现代web应用服务器-Express.js

    什么是Express.js Express是一个简洁而灵活的 Node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用. 如何使用Express.js 1.创建一个目录(即项目) ...

最新文章

  1. Code Forces Bear and Forgotten Tree 3 639B
  2. [原]VS2012编译GLEW 1.11
  3. Android获取内部和SDCard的存储空间
  4. bos开发时,测试卡在登录界面解决
  5. transparentblt函数实现透明贴图 (上)
  6. 谈谈秒杀系统的落地方案
  7. 冲动当机立断(2006-01-19 16:58:32)(新浪)
  8. POJ 1511 Invitation Cards——Dijkstra优先队列优化+反向建图
  9. 漫话:如何给女朋友解释什么是2PC(二阶段提交)?
  10. 不藏了,这些Java反射用法总结都告诉你们
  11. python科学计算教学_Python最好用的科学计算库:NumPy快速入门教程(二)
  12. 关于建筑企业 业财一体化的一点思考
  13. 几个开源项目实体层实现方式比较
  14. 网页登录页面模板下载
  15. Android 接口测方法
  16. ASO优化在大数据时代应该怎么操作,aso优化如何操作
  17. Android实现一键复制粘贴,兼容低版本系统(api 11以下)
  18. 计算机视觉经典书目清单
  19. java class dex_class文件与dex文件分析
  20. 互联网业务数据分析- 数据工具

热门文章

  1. linux学习课程从入门到精通:Linux基本操作和服务器硬件选购指南
  2. 辞旧迎新,新工作感悟!
  3. Java面试知识点(零)Java零碎知识点
  4. 浅析计算机用户身份识别技术,浅谈网络安全之身份认证技术
  5. Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器
  6. CSS基础教程(上)
  7. tc7102路由器虚拟服务器,电信华为tc7102路由器怎么设置
  8. Ubuntu 16.04系统下出现搜狗拼音安装失败问题
  9. 网页无法打开...因为:net:ERR_CLEARTEXT_NOT_PERMITTED错误解决办法
  10. 谷歌支付 googleplay API权限相关设置