詳解Node.js開發(fā)中的express-session-創(chuàng)新互聯(lián)

什么是session

網(wǎng)站的建設創(chuàng)新互聯(lián)建站專注網(wǎng)站定制,經(jīng)驗豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設計體驗!已為成都圍欄護欄等企業(yè)提供專業(yè)服務。

session是保存在服務器端的會話。session的典型應用場景是用戶登錄某網(wǎng)站之后,將其登錄信息放入session,在以后的每次請求中查詢相應的登錄信息以確保該用戶合法。比如購物車等等經(jīng)典場景

為什么要使用session

談及session一般是在web應用的背景之下,我們知道web應用是基于HTTP協(xié)議的,而HTTP協(xié)議恰恰是一種無狀態(tài)協(xié)議。也就是說,用戶從A頁面跳轉(zhuǎn)到B頁面會重新發(fā)送一次HTTP請求,而服務端在返回響應的時候是無法獲知該用戶在請求B頁面之前做了什么的。

而正是這種web動態(tài)化的需求,給HTTP協(xié)議提出了一個難題:一個無狀態(tài)的協(xié)議怎樣才能關聯(lián)兩次連續(xù)的請求呢?也就是說無狀態(tài)的協(xié)議怎樣才能滿足有狀態(tài)的需求呢?

此時有狀態(tài)是必然趨勢而協(xié)議的無狀態(tài)性也是木已成舟,因此我們需要一些方案來解決這個矛盾,來保持HTTP連接狀態(tài),于是出現(xiàn)了cookie和session。

session與cookie的關系

上面提到解決HTTP協(xié)議自身無狀態(tài)的方式有cookie和session。二者都能記錄狀態(tài),前者是將狀態(tài)數(shù)據(jù)保存在客戶端,后者則保存在服務端。

安全性

cookie將信息保存在客戶端,如果不進行加密的話,無疑會暴露一些隱私信息,安全性很差,一般情況下敏感信息是經(jīng)過加密后存儲在cookie中,但很容易就會被竊取。而session只會將信息存儲在服務端,如果存儲在文件或數(shù)據(jù)庫中,也有被竊取的可能,只是可能性比cookie小了太多。

Session安全性方面比較突出的是存在會話劫持的問題,這是一種安全威脅,總體來講,session的安全性要高于cookie。

express框架之session 內(nèi)存存儲

express-session 是基于express框?qū)iT用于處理session的中間件。session的認證機制離不開cookie,需要同時使用cookieParser 中間件。

var express = require('express');
var session = require('express-session');
var cookieParser = require('cookie-parser');

var app = express();

app.use(cookieParser());
app.use(session({
  secret: '12345',
  name: 'testapp',  //這里的name值得是cookie的name,默認cookie的name是:connect.sid
  cookie: {maxAge: 80000 }, //設置maxAge是80000ms,即80s后session和相應的cookie失效過期
  resave: false,
  saveUninitialized: true,
}));


app.get('/awesome', function(req, res){
  
  if(req.session.lastPage) {
    console.log('Last page was: ' + req.session.lastPage + ".");  
  }  
  req.session.lastPage = '/awesome'; //每一次訪問時,session對象的lastPage會自動的保存或更新內(nèi)存中的session中去。
  res.send("You're Awesome. And the session expired time is: " + req.session.cookie.maxAge);
});

app.get('/radical', function(req, res){
  if (req.session.lastPage) {
    console.log('Last page was: ' + req.session.lastPage + ".");  
  }
  req.session.lastPage = '/radical'; 
  res.send('What a radical visit! And the session expired time is: ' + req.session.cookie.maxAge);
});

app.get('/tubular', function(req, res){
  if (req.session.lastPage){
    console.log("Last page was: " + req.session.lastPage + ".");  
  }

  req.session.lastPage = '/tubular';
  res.send('Are you a suffer? And the session expired time is: ' + req.session.cookie.maxAge);
});


app.listen(5000);

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

標題名稱:詳解Node.js開發(fā)中的express-session-創(chuàng)新互聯(lián)
本文地址:http://muchs.cn/article42/eieec.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計網(wǎng)站維護、網(wǎng)頁設計公司、虛擬主機、微信小程序、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設