session中间件的使用

1.安装

npm i express-session

2.导入session中间件

const session=require("express-session")

3. 设置中间件

说明:

  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.idsecret:"forever",   //参与加密的字符串(又称签名)saveUninitialized:false, //是否每次请求自动创建cookie用来存储session的idresave:true, //是否在每次请求时重新保存session  20分钟,40分钟store:MongoStore.create({mongoUrl:'mongodb://127.0.0.1:27017/project' //数据库的连接配置}),cookie:{httpOnly:true, //开启后前端无法通过JS操作获取cookiemaxAge: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.idsecret:"forever",   //参与加密的字符串(又称签名)saveUninitialized:false, //是否每次请求自动创建cookie用来存储session的idresave:true, //是否在每次请求时重新保存session  20分钟,40分钟store:MongoStore.create({mongoUrl:'mongodb://127.0.0.1:27017/project' //数据库的连接配置}),cookie:{httpOnly:true, //开启后前端无法通过JS操作获取cookiemaxAge:1000*60*5 //这一条是控制sessionID的过期时间} 
})) 
//首页路由
app.get("/",(req,res)=>{res.send("home")
})
//登录
app.get("/login",(req,res)=>{// 传入username=admin&password=adminif(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("服务启动成功");
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章