express express-session的使用小结

2020-06-17 06:12:13易采站长站整理

return '随机id'
},
name:'connect.sid',// 每次响应中向cookie中起始的内容,默认起始为`connect.sid`,
proxy:true,// 对于cookie使用secure后,在传递的过程中相信反向代理服务器,默认为undefined只相信正向代理
resave:true,// 在一次会话中无论是否session被改变都会进行强制的储存
rolling:true,// 在每次会话中的响应中都覆写一次cookie,重置倒计时
saveUninitialized:true,// 将一个新创建还未修改的会话进行储存,默认为true
store:object// 一个储存对象,默认使用的是`MemoryStore`这个存储器
unset:'keep'// 控制没有设置`req.session`时候的行为(使用delete删除或者赋值null),默认'keep'会话期间不会保留,'destroy'会话完成后删除.
}));

方法

request.session
上挂载的
session
对象,除了有你添加的内容外,还有默认的方法存在:


req.session.regenerate(function(err) {
// 调用这个方法从新生成一个新的会话,完成后触发
})
req.session.destroy(function(err) {
// 删除这个会话,完成后触发
})
req.session.reload(function(err) {
// 从新加载session数据,完成后触发回调
})
req.session.save(function(err) {
// 使用当前内存中的数据保存到储存器中
// 默认在会话结束的时候就会自动调用这个方法
})
req.session.touch() // 更新cookie中的maxAge,一般不需要手动操作,交由中间件

属性

同样的在session实例上也有很多属性:


req.session.id // 保存唯一的会话id值,不可修改
req.session.cookie // 以键值对的形式保存cookie的原始数据
req.session.cookie.maxAge // 以毫秒的形式返回剩余存活时间
req.sessionID // 保存唯一的会话id,只读

一个简单的例子

一个简单的登录例子:


const express = require('express');
const app = new express();
const expressSession = require('express-session');
const userDb = new Map();
app.use(expressSession({
secret:'hello world',
saveUninitialized:true,
resave:false,
cookie:{
maxAge:1800000
},
rolling:true,
}));

app.get('/login', (request, response) => {

const
id = request.query.id,
pwd = request.query.pwd;

if(id && pwd){

if(userDb.has(id+pwd)){

response.send('该用户已登录');

}else{

request.session.userId = id+pwd;
userDb.set(id+pwd,id);
response.redirect('/');

}

}else{
response.send('请输入正确的帐号和密码');