0.0.1 • Published 5 years ago
fastify-pithy-session v0.0.1
fastify-pithy-session
Fastify插件用于读取和设置 session。
原理
- 在
fastify的onRequest钩子里面解析session同时计算session值的hash保存到fastify.prevSessionHash里面;如果有renew = true,则在fastify.prevSessionExpire保存过期信息。 - 在
fastify的onSend钩子里面判断是否需要重新保存,依据如下:- 进行过
session更改, 判断当前session的hash是否和fastify.prevSessionHash一致。 rolling是否为truerenew = true并且快要过期。
- 进行过
依赖
当前插件依赖 fastify-cookie
安装
npm i fastify-cookie fastify-pithy-session配置
引入并注册到 fastify 插件。
const fastify = require('fastify')();
app.register(require('fastify-cookie'), {
// 如果 session 配置了 signed 则需要添加这个参数进行签名。
secret: ['23a79fa38d2578d6'],
});
fastify.register(require('@tenny/fastify-session'), {
renew: true,
rolling: false,
key: 'fastify_sess',
cookie: {
maxAge: 86400, // 到期时间, 一天
httpOnly: true,
signed: true,
},
});
fastify.listen(3000);配置项
key- {String}:cookie key,默认为:'fastify_sess'rolling- {Boolean}: 强制每一次响应的时候都进行一次数据保存,默认为:falserenew- {Boolean}: 当 session 快过期的时候,保存数据,重新刷新有效期,默认为:falsecookie- {Object}:fastify-cookie Sending options配置项,默认:{ maxAge: 86400, httpOnly: true, signed: true }
如果同时配置了
rolling和renew则rolling的优先级高于renew,就是说如果配置了rolling则不需要配置renew。
使用
// 1. 获取 session
let session = req.session;
// 2. 设置 session
req.session = { login: true };
// 或者
req.session.login = true;fastify 版本 - 3.x
0.0.1
5 years ago