您的位置:首页 > Web前端 > Node.js

Nodejs express操作cookie和session

2015-04-22 23:23 387 查看
express使用cookiparser来解析cookie直接使用req.cooikes.name 就可以取得客户端发来的cookiecookie:
var express = require('express');
// 可以直接使用req.cookies.cname来访问cookie
var cookie = require('cookie-parser');
// 创建app对象
var app = express();
app.use(cookie())
// 设置cookie
app.get('/setc',function(req,res){
res.cookie('resc', '设置到cookie里的值', { expires: new Date(Date.now() + 900000), httpOnly: true });
res.end('cookies set ok')
})

// 取得cookie
app.get('/getc',function(req,res){
console.log('取得的cookie:'+req.cookies.resc)
res.end('cookies get ok')
})

// 3000端口监听http请求
app.listen(3000);
对于session,使用express-session中间件,默认是放在内存里的,可以通过其他方法存储
可以直接使用req.session.sname取得和设置session
// session功能var session = require('express-session');
// secret是设置在cookie里的sessionkey
app.use(session({'secret':'WBLOG'}))
// 设置sessionapp.get('/login',function(req,res){req.session.user = {'name':req.query.name,'pass':req.query.pass,'avatar':req.query.avatar}res.end('session is OK.');})
也可以把session存储在mongodb里,需要使用到connect-mongo包
connect-mongo依赖session
var MongoStore  = require('connect-mongo')(session);
app.use(session({'secret':'WBLOG','store':new MongoStore({'db':'esession','host': 'localhost','port': 27017,	
	'collection':'sessions',// 存在哪个集合里,默认为sessions	'ttl':10, // session过期时间	'autoRemove': 'native',// mongo2.2+自动移除过期的sessiondisable为禁用	'autoRemoveInterval': 10, //移除过期session间隔时间,默认为10分钟	'touchAfter': 24 * 3600 //同步session间隔,默认每次请求都会同步到数据库
	})}))// secret是设置在cookie里的sessionkey// store用来指定session存储位置
这样session就会被存储在本机的esession数据库的sessions集合中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: