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的文件,里面有每个模块的示例,看那个其实比找资料实惠~~