session中间件的使用

这篇具有很好参考价值的文章主要介绍了session中间件的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.安装

npm i express-session

2.导入session中间件

const session=require("express-session")

3. 设置中间件

说明:文章来源地址https://www.toymoban.com/news/detail-559061.html

  1. 设置了session的名称为"sid",这是cookie的名称,默认值是connect.id。
  2. 设置了一个密钥"forever",用于对session数据进行加密和签名。
  3. 设置了两个选项:saveUninitialized和resave。saveUninitialized表示是否每次请求自动创建cookie用来存储session的id,默认值为false;resave表示是否在每次请求时重新保存session,默认值为true。这里设置为true,表示每次请求都会重新保存session。
  4. 使用了MongoStore作为session存储方式,将session数据存储到MongoDB数据库中。需要提供一个mongoUrl参数,指定数据库的连接配置。
  5. 设置了cookie的一些属性,如httpOnly表示开启后前端无法通过JS操作获取cookie,maxAge表示控制sessionID的过期时间,这里设置为5分钟。
app.use(session({
    name:"sid",   //设置cookie的name,默认值是connect.id
    secret:"forever",   //参与加密的字符串(又称签名)
    saveUninitialized:false, //是否每次请求自动创建cookie用来存储session的id
    resave:true, //是否在每次请求时重新保存session  20分钟,40分钟
    store:MongoStore.create({
        mongoUrl:'mongodb://127.0.0.1:27017/project' //数据库的连接配置
    }),
    cookie:{
        httpOnly:true, //开启后前端无法通过JS操作获取cookie
        maxAge:1000*60*5 //这一条是控制sessionID的过期时间
    } 
})) 

 4.session的读取

app.get("/cart",(req,res)=>{
    //访问session对象,从而存储用户的关键信息
    //检测session是否存在用户数据
    if(req.session.username){
       res.send("欢迎来到购物车页面")
    }else{
        res.send("你还没有登录")
    }
})

5.session的销毁

app.get("/logout",(req,res)=>{
    req.session.destroy(()=>{
        res.send("退出成功")
    })
})

6.源码展示

const express=require("express")
//导入session中间件
const session=require("express-session")

const MongoStore=require("connect-mongo")

const app=express()

//设置中间件
app.use(session({
    name:"sid",   //设置cookie的name,默认值是connect.id
    secret:"forever",   //参与加密的字符串(又称签名)
    saveUninitialized:false, //是否每次请求自动创建cookie用来存储session的id
    resave:true, //是否在每次请求时重新保存session  20分钟,40分钟
    store:MongoStore.create({
        mongoUrl:'mongodb://127.0.0.1:27017/project' //数据库的连接配置
    }),
    cookie:{
        httpOnly:true, //开启后前端无法通过JS操作获取cookie
        maxAge:1000*60*5 //这一条是控制sessionID的过期时间
    } 
})) 
//首页路由
app.get("/",(req,res)=>{
    res.send("home")
})
//登录
app.get("/login",(req,res)=>{
    // 传入username=admin&password=admin
    if(req.query.username==='admin' && req.query.password==='admin'){
        //设置session信息
        req.session.username='admin'
        req.session.sid='258aefccc'
        // 成功响应
        res.send("success")
    }else{
        res.send("fail")
    }
   
})
//session的读取
app.get("/cart",(req,res)=>{
    //访问session对象,从而存储用户的关键信息
    //检测session是否存在用户数据
    if(req.session.username){
       res.send("欢迎来到购物车页面")
    }else{
        res.send("你还没有登录")
    }
})

//session的销毁
app.get("/logout",(req,res)=>{
    req.session.destroy(()=>{
        res.send("退出成功")
    })
})

app.listen(3000,()=>{
    console.log("服务启动成功");
})

到了这里,关于session中间件的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • node中间件-express框架

    方式一 : express提供的脚手架,直接创建一个应用的骨架 安装脚手架npm install -g express-generator 创建项目 express express-demo 安装依赖npm install 启动项目 node bin/www 方式二 : 从零搭建自己的express应用结构; 初始化项目 npm init 安装express npm i express 导入–创建–监听 使用参考文档 中

    2024年02月16日
    浏览(41)
  • node中间件-koa框架

    安装 npm i koa koa导出的是一个类,必须用 new 进行创建 koa也是通过注册中间件来完成请求操作的 koa注册的中间件提供了两个参数: ctx:上下文(Context)对象; koa并没有像express一样,将req和res分开,而是将它们作为ctx的属性; ctx代表一次请求的上下文对象; ctx.reque

    2024年02月16日
    浏览(37)
  • 使用开源中间件:云计算环境中的中间件采用开源框架,可以减少开发和部署时间,提高开发效率和可靠性。

    作者:禅与计算机程序设计艺术 云计算是一个新的分布式计算模型,具有独特的特征。它把资源的虚拟化、弹性伸缩和按需付费等能力集成到了一起。这种新型的分布式计算模式,使得软件工程师们在编写应用程序时无须担心服务器性能,而只需要关注应用本身。同时,云平

    2024年02月04日
    浏览(42)
  • Django操作cookie、Django操作session、Django中的Session配置、CBV添加装饰器、中间件、csrf跨站请求

    1 Django操作cookie 2 Django操作session 3 Django中的Session配置 4 CBV添加装饰器 5 中间件 6 csrf跨站请求 6.1 使用django官方提供的js文件进行csrf认证

    2024年02月13日
    浏览(36)
  • 第九篇:node静态文件服务(中间件)

     🎬 江城开朗的豌豆 :个人主页  🔥 个人专栏  :《 VUE 》 《 javaScript 》  📝  个人网站  :《 江城开朗的豌豆🫛 》  ⛺️ 生活的理想,就是为了理想的生活 ! 当今互联网时代,Node.js 成为了最受欢迎的服务器端开发平台之一。作为一名小白,学习 Node.js 可能会让你感

    2024年02月20日
    浏览(32)
  • Django模板,Django中间件,ORM操作(pymysql + SQL语句),连接池,session和cookie, 缓存

    今日概要: 模板 中间件 ORM操作(pymysql + SQL语句) session和cookie 缓存(很多种方式) 请求周期 路由系统 最基本路由关系 动态路由(含正则) 路由分发不同的app中 + include + 本质 + name + namespace 视图 类和函数(FBV和CBV) 参数 request 请求数据 自定义数据 响应 其他知识 虚拟环

    2024年02月04日
    浏览(35)
  • cool Node后端 中实现中间件的书写

    1.需求 在node后端中,想实现一个专门鉴权的文件配置,可以这样来解释 就是 有些接口需要token调用接口,有些接口不需要使用token 调用  这期来详细说明一下      什么是中间件中间件顾名思义是指在请求和响应中间,进行请求数据的拦截处理,数据校验,并且进行逻辑处理

    2024年02月20日
    浏览(32)
  • 【从零开始的rust web开发之路 二】axum中间件和共享状态使用

    第一章 axum学习使用 第二章 axum中间件使用 上篇文件讲了路由和参数相应相关的。axum还有个关键的地方是中间件的使用,这篇文件就来说说。 这个概念跟gin框架的中间件概念一样,类似于springboot项目当中的请求过滤器,在请求过来的时候链式执行一些操作。例如鉴权,日志

    2024年02月11日
    浏览(39)
  • node 第十四天 基于express的第三方中间件multer node后端处理用户上传文件

    Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。它是写在 busboy 之上的所以非常高效。 前面我们已经知道了怎样利用express提供的静态资源处理中间件 express.static() 处理用户请求静态资源文件(图片, js, css等) 接下来学习如何处理用

    2024年02月06日
    浏览(32)
  • 【开发】中间件——ElasticSearch

    ElasticSearch是一个基于Lucene的搜索服务器。提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口 ElasticSearch是一个基于Lucene的搜索服务器。提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口 ElasticSearch是用JAVA开发的。达到实时搜索,稳定可靠,快速,

    2024年02月17日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包