一、安装
npm install cookie-session -save-dev
模块引入及配置
var cookieSession = require("cookie-session");
//cookie及session组件注册
app.use(cookieParser());
app.use(cookieSession({
name: 'sessionDemo',
secret: '1234567890ABCEDFJHIJKLQWERTYZ',//jsessionId
resave: true,
saveUninitialized:true,
cookie: {maxAge: 1000*60*60*24*30}
}));
express-session的常用参数:
- secret:一个String类型的字符串,作为服务器端生成session的签名;
- name:返回客户端的key的名称,默认为content.sid,也可以自己设置;
- resave:
1、(是否允许)当客户端并行发送多个请求时,其中一个请求在另一个请求结束时对session进行修改覆盖并保存。默认为true。但是(后续版本)有可能默认失效,所以最好手动添加。
2、强制session保存到session store中。即使在请求中这个session没有被修改。但是这个并不一定是必须的,如果客户端有两个并行的请求到你的客户端,一个请求对session的修改可能被另外一个请求覆盖掉,即使第二个请求并没有修改sesion。默认是true,但是默认值已经过时,因此以后default可能会被修改。因此好好研究你的需求选择一个最适用的。大多数情况下你可能需要false 最好的知道你的store是否需要设置resave的方法是通过查看你的store是否实现了touch方法(删除那些空闲的session。同时这个方法也会通知session store指定的session是活动态的),如果实现了那么你可以用resave:false,如果没有实现touch方法,同时你的store对保存的session设置了一个过期的时间,那么建议你用resave:true; - saveUninitialized:
1、初始化session时是否保存到存储。默认为true, 但是(后续版本)有可能默认失效,所以最好手动添加。
2、强制没有“初始化”的session保存到storage中,没有初始化的session指的是:刚被创建没有被修改,如果是要实现登陆的session那么最好设置为false(reducing server storage usage, or complying with laws that require permission before setting a cookie) 而且设置为false还有一个好处,当客户端没有session的情况下并行发送多个请求时。默认是true,但是不建议使用默认值。 - cookie:设置返回到前端key的属性,默认值为{ path: ‘/’, httpOnly: true, secure: false, maxAge: null }。
express-session的一些方法:
- Session.destroy():删除session,当检测到客户端关闭时调用;
- Session.reload():当session有修改时,刷新session;
- Session.regenerate():将已有session初始化;
- Session.save():保存session;