express cookie session

今天打算学习一个express中cookie和session的用法。自己实现了一个小例子,碰到的问题,记录一下。

http://www.it165.net/pro/html/201405/13965.html

1、mongoose连接数据库:

可以自己指定数据库,如果不存在的话,会自动创建一个(不过有点慢);

数据库中collection是项目名+s:exports.Demo = mongoose.model('cs', demoSchema);集合名为cs,一般会加s,同一个项目可以指定不同的集合名,对应不同的new Schema;mongoose.connect('mongodb://localhost/blog');数据库名为blog。   

router中不要忘了mongoose.connect('mongodb://localhost/cs');   只需要添加一次。否则会提示unclosed connection。

2、例子主要是登陆,注册和退出。涉及到了cookie和session,有时候需要给res.locals赋值。mongoose的方法也不太熟悉。总算是跑通了,改天再看一下。

功能 路径 路由 view
首页 /   header.ejs
注册 /reg reg.js reg.ejs
登陆 /login login.js login.ejs
退出 /logout logout.js  

今天又看了一遍:对于不太了解的东西,记录一下:

1、reg.js中:给res.locals赋了两个属性,可以再前端页面使用,在视图渲染之前有效,所以network中看不到。

2、由于我加了cookie-parser和express-session,所以有res.cookie()和req.session。

login.js中:res.cookie('islogin', name, { maxAge: 60000 });

res.locals.username = name;
req.session.username = res.locals.username;

/中:req.session.username = req.cookies.islogin;

res.locals.username = req.session.username;

3、logout.js中:req.session.destroy();

还是不太理解为什么要做这些。

 

找了一篇介绍:http://www.shaoqun.com/a/98386.aspx(EXPRESS 4.x 以上使用session和cookie 的记录)

与之前不同的地方是,没有用express-session,是基于connect实现的session。

app.js需要添加的代码:

app.use(bodyParser.json());

app.use(bodyParser.urlencoded());

app.use(cookieParser());

app.use(connect.session({ secret: 'lgphp', key: 'lgphp' ,cookie: { maxAge: 20000}})); //session 时长为20秒,这个是以毫秒为单位,这样我们就建立一个session的会话,这是一个全局的设置

routes(app);

session部分:

设置:req.session.sessname = 'i am a sesion';
获取:res.send('session:' + req.session.sessname);
删除: req.session.destroy();
判断session是否存在:if (req.session){}

cookie部分:

设置:res.cookie('cookiename','i am a cookie',{ maxAge: 20000,httpOnly:true, path:'/'});//cooike 时长 30 sec
获取:var c = req.cookies.cookiename //这是个字典对象,你可以用括号的方式获得
删除:res.cookie('cookiename','null',{maxAge:0});
判断cookie是否存在:if ('undefined' === (typeof req.cookies.cookiename))

     

你可能感兴趣的:(session)