属性 | 说明 |
---|---|
cookie |
默认值 { path: '/', httpOnly: true, secure: false, maxAge: null }
|
domain |
cookie 可以设置的域名,如果没有设置则cookie默认在当前域可以使用 |
expires |
cookie 失效时间,可以设置时间,不建议给固定时间,设置maxAge 之后自动会生成这个值 |
httpOnly |
属性禁止客户端JavaScript 的访问,禁止后不能使用document.cookie
|
maxAge |
设置cookie 开始多少毫秒失效 |
path |
默认值为域名的根路径 |
secure |
为true ,https 才传递到服务器端。http 是不会传递的 |
genid |
设置创建session id 的自定义函数,默认使用 uid-safe 扩展来生成id,一定要保证创建的id不要重复。 |
name |
在response 中sessionID 这个cookie的名称 ,即set-cookie 中sessionID 的key ,看一下源码片段:name = options.name or options.key or connect.sid //很显然cookie的name默认是connect.sid ,而且首先获取到的name 而不是key
|
resave |
强制session 保存到session store 中 即使没有发生变化,默认为false 。 知道你的store 是否需要设置resave 的方法是通过查看你的store 是否实现了touch方法(删除那些空闲的session 。同时这个方法也会通知session store 指定的session 是活动态的),如果实现了那么你可以用resave:false ,如果没有实现touch 方法,同时你的store 对保存的session 设置了一个过期的时间,那么建议你用resave:true
|
rolling |
在每次请求时强行设置cookie ,这将重置cookie 过期时间(默认:false ), 强制在每一个response 中都发送session 标识符的cookie ,即每次的response 都带有set-cookie 属性,使得客户端每次都重新设置cookie 。 如果把这个值设置为true但是saveUnitialized设置为false,那么cookie不会被包含在响应中(没有初始化的session)
|
saveUninitialized |
强制存储未初始化的session (默认为true ,建议手动添加) |
secret |
用来注册session id 到cookie 中,相当与一个密钥 |
store |
session 存储的实例子,一般可以用redis 和mangodb 来实现 |
unset |
默认是keep ,设置req.session 在什么时候可以设置。 destory :请求结束时候session摧毁,keep : session 在存储中的值不变,在请求之间的修改将会忽略,而不保存 。 |
Session Store Implementation
session store的诸多回调,session store必须是事件驱动的而且是具体方法才可以触发,因没有做相关store太多实践,不做太多说明
store.all(callback)
返回一个存储store的数组
store.destroy(sid, callback)
在使用destory/delete 一个session时的回调
store.clear(callback)
delete 一个session时的回调
store.length(callback)
获取session的总长度在一个store中
store.get(sid, callback)
通过sessionid获取一个store事例对象
store.set(sid, session, callback)
自动生成一个sessionid或者调用save 一个session对象时候回调
store.touch(sid, session, callback)
使用touch更新session的时候回调