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的文件,裏面有每個模塊的示例,看那個其實比找資料實惠~~