代码拉取完成,页面将自动刷新
Fastify插件用于读取和设置 session
。
fastify
的 onRequest
钩子里面解析 session
同时计算 session
值的 hash
保存到 fastify.prevSessionHash
里面;如果有 renew = true
,则在 fastify.prevSessionExpire
保存过期信息。fastify
的 onSend
钩子里面判断是否需要重新保存,依据如下:
session
更改, 判断当前 session
的 hash
是否和 fastify.prevSessionHash
一致。rolling
是否为 true
renew = 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
}: 强制每一次响应的时候都进行一次数据保存,默认为:false
renew
- { Boolean
}: 当 session 快过期的时候,保存数据,重新刷新有效期,默认为:false
cookie
- { 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;
3.x
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。