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.pswp.cn/news/3.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/3.shtml
英文地址,請注明出處:http://en.pswp.cn/news/3.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微服務、SpringBoot、SpringCloud 三者的區別

🎈 作者:Linux猿 🎈 簡介:CSDN博客專家🏆,華為云享專家🏆,Linux、C/C、云計算、物聯網、面試、刷題、算法盡管咨詢我,關注我,有問題私聊! &…