express 4.0 session 用法與填坑指南

Nodejs學習筆記

使用express框架,搭建網站,學習一些必要的web代碼寫法,今天涉及的是session的用法。

看見blog.fens.me中的一些文章,照着開始學習nodejs的session用法,但是因爲blog中作者學習的比較早,express4.0按照當時的開發存在一定的問題,網上有許多的解決辦法,但是不能直接使用,或者感覺少了一些我想要的東西,自己睡前把這些東西總結下,備案~~

==================================================================================

框架和用到的依賴:

1.express 4.0+

2.connect-mongo

3.express-session

#####廢話記錄:爲什麼express4.0之前的版本可以按照大部分教程中的使用,因爲4.0之前express還沒有將session模塊分離,都是和express集成到一起的,而在4.0之後的版本,很多模塊都獨立出去,需要自己重新去依賴。

==================================================================================

express的session原理:

利用mongodb進行保存session,然後完成單線程sgi的session的目的。

這裏感覺和現在互聯網公司中的rest請求驗證token的模式是一致的,不過互聯網公司由於用戶體驗等問題,大部分採用redis保存唯一的通用sessionId或者token,從而達到多服務器公用同一個身份驗證的目的。

==================================================================================

1.本地mongodb的配置JS(setting.js)路徑和app.js同級

var setting = {
    cookieSecret: "hello",
    db: "session"
};
module.exports = setting;

#######這裏繼續廢話,module是採用CommonJS的規約進行JS的類等管理的,這裏犯了低級錯誤,exports少寫了一個s,基本功不好,js理解不好,造成問題,需要js的知識強化

==================================================================================

2.在app.js中引入必須的模塊

var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var setting = require('./setting');

==================================================================================

3.引入session的配置

app.use(session({
    secret: setting.cookieSecret,
    store: new MongoStore({
        db : setting.db
    })
}));

==================================================================================

4.寫入session

req.session.username = req.body.username;
在session中寫入username

==================================================================================

5.讀取session

    if(req.session.username != null){
        res.render('users',{"title":"has session"});
    } else{
        res.render('index', { title: 'Express' });
    }
判斷session是否存在,debug模式可以看到值

每個模塊中都有readme.md的文件,裏面有每個模塊的示例,看那個其實比找資料實惠~~





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章