express的中間件基於connect模塊而來,因此相關文檔能夠直接參考
http://www.senchalabs.org/connect/redis
cookieSession以前須要使用cookieParser中間件express
var express =require('express'); var app = express(); app.use(express.cookieParser('S3CRE7')); app.use(express.cookieSession());
中間件傳遞參數以下:key
: cookie鍵,感受相似於PHP的session_id;secret
: 加密cookie值的字符串,與cookieParser中的secret
功能徹底相同,若是cookieParser沒有傳入secret
參數,此處必須傳入。我的角度爲了主觀上的感受,採用了兩個不一樣的值。cookie
: 設置cookie的相關參數,即除KV對以外的expire/maxAge,httpOnly,path值proxy
: 是否信任反向代理,默認falsecookie
解析以後經過req.session
訪問值session
req.session.name = 'jason'
app
res.send('')
即設置了session的一個KV對,此處比較讓我困惑。鄙人一直認爲中間件執行是單向的,只負責向後面應用層解析掛載數據,而設置session則反之。經google查詢,緣由是connect中間件經過patch向http.ServerResponse
添加了一個header event
用於更新cookie:ui
res.on('header', function(){ res.setHeader('Set-Cookie', cookie.serialize(key, '')); }
模擬一個登錄驗證google
function loginCheck(req,res,next){ if(req.session.name){ next(); }else{ res.send({"info":"unlogin"}) } }
大概使用就是這樣,這種是使用cookie來保存session值,NODEjs的內存保存session
,redis
,memcache
的使用方案稍後放出加密