Express中將session存入mongodb的注意事項

本身在參照《Node.js開發指南》作session的過程當中遇到了一些問題,本身經過查詢各方資料仍是把搞出來了,因而總結出下面這篇注意事項。javascript

關於Express中的sessionjava

Express中能夠經過增長Connect的session中間件來開啓對Session支持。其中至少包括如下幾個步驟:數據庫

一、首先須要引入connect-mongo模塊express

var MongoStore = require('connect-mongo')(express);

(注:多是版本的差別,在《Node.js開發指南》一書中使用的是var MongoStore = require('connect-mongo');,在我電腦是這將會致使Node報Cannot read property 'Store' of undefinedcookie

二、使用cookie處理中間件session

app.use(express.cookieParser());

三、使用Connect的session中間件app

app.use(express.session({
    secret: settings.cookieSecret,//設置加密字符串
    store: new MongoStore({
        db:'myapp' //將session存入myapp數據庫中
    })
}));

四、移動路由處理中間件的位置ui

app.use(app.router);

上面這段代碼在Express建立項目時就會生成,主要用於顯示地去處理路由,若是刪去上述代碼,Express也將會隱式地去處理路由。若是你已經顯示的使用路由處理中間件你須要將上述代碼的位置放在session處理中間件以後。不然在後續經過req.session去設置/讀取session過程當中你將會獲得reg.session是undefined的提示/錯誤報告。加密

 

如今req.session等屬性就能夠被全部路由及下級中間件所訪問,req.session的屬性會伴隨着每一次響應發送給客戶端。spa

相關文章
相關標籤/搜索