express使用cookiparser来解析cookie
直接使用req.cooikes.name 就可以取得客户端发来的cookie
cookie:
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'}))
// 设置session
app.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+自动移除过期的session,disable为禁用
'autoRemoveInterval': 10, //移除过期session间隔时间,默认为10分钟
'touchAfter': 24 * 3600 //同步session间隔,默认每次请求都会同步到数据库
})
}))
// secret是设置在cookie里的sessionkey
// store用来指定session存储位置
这样session就会被存储在本机的esession数据库的sessions集合中。