国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解Node.js開發中的express-session

2019-11-19 16:33:02
字體:
來源:轉載
供稿:網友

什么是session

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

為什么要使用session

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

而正是這種web動態化的需求,給HTTP協議提出了一個難題:一個無狀態的協議怎樣才能關聯兩次連續的請求呢?也就是說無狀態的協議怎樣才能滿足有狀態的需求呢?

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

session與cookie的關系

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

安全性

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

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

express框架之session 內存存儲

express-session 是基于express框專門用于處理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會自動的保存或更新內存中的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);

一旦我們將express-session中間件用use掛載后,我們可以很方便的通過req參數來存儲和訪問session對象的數據。req.session是一個JSON格式的JavaScript對象,我們可以在使用的過程中隨意的增加成員,這些成員會自動的被保存到option參數指定的地方,默認即為內存中去。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 商城县| 乃东县| 渭源县| 宁陵县| 阿拉善盟| 大安市| 陇川县| 清流县| 阳城县| 南康市| 瑞昌市| 崇仁县| 汶上县| 德安县| 南投县| 习水县| 余庆县| 吕梁市| 建水县| 汶川县| 常宁市| 太谷县| 黄浦区| 福贡县| 盘山县| 巴青县| 普宁市| 葵青区| 汽车| 平定县| 石柱| 苏尼特左旗| 青岛市| 伊春市| 正镶白旗| 化州市| 新宾| 车险| 壤塘县| 罗江县| 年辖:市辖区|