Express Session 的基本使用
生活随笔
收集整理的這篇文章主要介紹了
Express Session 的基本使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、 Session 簡單介紹
session 是另一種記錄客戶狀態的機制,不同的是 Cookie 保存在客戶端瀏覽器中,而 session 保存在服務器上。
Cookie 數據存放在客戶的瀏覽器上,Session 數據放在服務器上。Session 相比 Cookie 要 更安全一些。由于 Session 保存到服務器上,所以當訪問量增多的時候,會比較占用服務器 的性能。單個 cookie 保存的數據大小不能超過 4K,很多瀏覽器都限制一個站點最多保存 20 個 cookie。Session 沒有這方面的限制。Session 是基于 Cookie 進行工作的。
二、 Session 的工作流程
當瀏覽器訪問服務器并發送第一次請求時,服務器端會創建一個 session 對象,生成一 個類似于 key,value 的鍵值對, 然后將 key(cookie)返回到瀏覽器(客戶)端,瀏覽器下次 再訪問時,攜帶 key(cookie),找到對應的 session(value)。
三、 express-session 的使用
https://www.npmjs.com/package/express-session
1、安裝 express-session
cnpm install express-session --save2、引入 express-session
var session = require("express-session");3、 設置官方文檔提供的中間件
app.use(session({ secret: 'keyboard cat', resave: true, saveUninitialized: true }))4、使用
設置值
獲取值
req.session.username
四、 express-session 的常用參數
app.use(session({ secret: '12345', name: 'name', cookie: {maxAge: 60000}, resave: false, saveUninitialized: true }));
五、 express-session 的常用方法
req.session.destroy(function(err) { /*銷毀 session*/ }) req.session.username='張三'; //設置 session req.session.username //獲取 session req.session.cookie.maxAge=0; //重新設置 cookie 的過期時間,它會銷毀所有的session const express = require("express") const ejs = require("ejs") const bodyParser = require("body-parser") const cookieParser = require('cookie-parser') const session = require('express-session') const app = new express() // 配置模板引擎 app.engine("html", ejs.__express) app.set("view engine", "html") // 配置靜態web目錄 app.use(express.static("static"))// 配置第三方中間件 app.use(bodyParser.urlencoded({ extended: false })) app.use(bodyParser.json()) // 配置cookieParser中間件 app.use(cookieParser("zep")) // 配置session的中間件 app.use(session({secret: 'keyboard cat', // 服務器端生成session的簽名name: "sessionName", // 修改session對應的cookie的名稱resave: false, // 強制保存 session ,即使它并沒有變化saveUninitialized: true, // 強制將未初始化的session存儲cookie: { maxAge: 1000*60, // 設置過期時間為一分鐘secure: false // true 表示只有https協議才能訪問cookie},rolling: true // 在每次請求時強行設置cookie,這將重置cookie的過期時間(默認值為false) })) app.get("/book", (req, res)=> {// 設置sessionreq.session.username = "張三三"res.send("book頁面") }) app.get("/getbook", (req, res)=> {// 獲取sessionif(req.session.username) {res.send(req.session.username + "-已登錄")} else {res.send("沒有登錄")} })app.get("/", (req, res)=> {// 設置cookie 如果cookie沒有過期的話,關閉瀏覽器后重新打開,cookie仍然還在,不會被銷毀res.cookie("username", "張三", {maxAge: 1000*60*60,signed: true})res.send("首頁") })app.get("/article", (req, res) => {// 獲取cookielet username = req.cookies.usernameconsole.log(username)res.send("新聞頁面--" + username) })app.get("/user", (req, res) => {// 獲取加密的cookielet username = req.signedCookies.usernameres.send("用戶頁面--" + username) })app.get("/login", (req, res)=> {// 設置sessionreq.session.username = "張三啊"res.send("執行登錄") })app.get("/loginOut", (req, res)=> {// 1.設置session的過期時間為0//req.session.cookie.maxAge = 0// 2.銷毀指定的session//req.session.username = ""// 3.銷毀所有的sessionreq.session.destroy()res.send("退出登錄") })app.post("/doLogin", (req, res)=> {var body = req.bodyconsole.log(body)res.send("執行提交") })app.listen(3000)六、 負載均衡配置 Session,把 Session 保存到數據庫里面
總結
以上是生活随笔為你收集整理的Express Session 的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Packet Tracer 5.0 建构
- 下一篇: 一、人工智能数学基础——线性代数