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',
  esave: true,
  saveUninitialized: true
}))


4.使用
設置值 req.session.username = "張三";
獲取值 req.session.username


四、express-session 的常用參數:


app.use(session({
  secret: '12345',
  name: 'name',
  cookie: {maxAge: 60000},
  resave: false,
  saveUninitialized: true
}));
行加密的字符串.這個
參數 作用
secret 一個 String 類型的字符串,作為服務器端生成 session 的簽名。
name 返回客戶端的 key 的名稱,默認為 connect.sid,也可以自己設置。
resave 強制保存 session 即使它並沒有變化,。默認為 true。建議設置成 false。 don't save session if unmodified
saveUninitialized 強制將未初始化的 session 存儲。當新建了一個 session 且未設定屬性或值時,它就處於

未初始化狀態。在設定一個 cookie 前,這對於登陸驗證,減輕服務端存儲壓力,權限控制是有幫助的。(默
認:true)。建議手動添加。
cookie 設置返回到前端 key 的屬性,默認值為{ path: ‘/’, httpOnly: true, secure: false, maxAge: null }。
rolling 在每次請求時強行設置 cookie,這將重置 cookie 過期時間(默認:false)


五、express-session 的常用方法:


req.session.destroy(function(err) { /*銷毀 session*/
})
req.session.username='張三'; //設置 session
req.session.username //獲取 session
req.session.cookie.maxAge=0; //重新設置 cookie 的過期時間


六、負載均衡配置 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
})
}))


七、Cookie 和 Session 區別


1、cookie 數據存放在客戶的瀏覽器上,session 數據放在服務器上。


2、cookie 不是很安全,別人可以分析存放在本地的 COOKIE 並進行 COOKIE 欺騙
考慮到安全應當使用 session。



3、session 會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能
考慮到減輕服務器性能方面,應當使用 COOKIE。


4、單個 cookie 保存的數據不能超過 4K,很多瀏覽器都限制一個站點最多保存 20 個 cookie。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM