推荐答案
// www.javascriptcn.com code example
const fastify = require('fastify')({ logger: true });
const fastifySession = require('fastify-session');
const fastifyCookie = require('fastify-cookie');
// 注册 fastify-cookie 插件
fastify.register(fastifyCookie);
// 注册 fastify-session 插件
fastify.register(fastifySession, {
secret: 'a-secret-key-with-at-least-32-characters',
cookie: {
secure: false, // 仅在 HTTPS 下设置为 true
maxAge: 86400 // 会话有效期,单位为秒
}
});
// 示例路由,设置会话数据
fastify.get('/set-session', (request, reply) => {
request.session.user = { id: 1, name: 'John Doe' };
reply.send('Session data set');
});
// 示例路由,获取会话数据
fastify.get('/get-session', (request, reply) => {
const user = request.session.user;
reply.send(user || 'No session data found');
});
// 启动服务器
fastify.listen(3000, (err) => {
if (err) {
fastify.log.error(err);
process.exit(1);
}
fastify.log.info('Server listening on http://localhost:3000');
});本题详细解读
1. 安装依赖
首先,你需要安装 fastify-session 和 fastify-cookie 插件:
npm install fastify-session fastify-cookie
2. 注册插件
在 Fastify 应用中,你需要先注册 fastify-cookie 插件,因为 fastify-session 依赖于它来处理会话的存储和读取。
fastify.register(fastifyCookie);
接下来,注册 fastify-session 插件,并配置会话的密钥和 Cookie 选项:
fastify.register(fastifySession, {
secret: 'a-secret-key-with-at-least-32-characters',
cookie: {
secure: false, // 仅在 HTTPS 下设置为 true
maxAge: 86400 // 会话有效期,单位为秒
}
});3. 设置会话数据
在路由处理函数中,你可以通过 request.session 对象来设置会话数据。例如:
fastify.get('/set-session', (request, reply) => {
request.session.user = { id: 1, name: 'John Doe' };
reply.send('Session data set');
});4. 获取会话数据
你可以通过 request.session 对象来获取会话数据。例如:
fastify.get('/get-session', (request, reply) => {
const user = request.session.user;
reply.send(user || 'No session data found');
});5. 启动服务器
最后,启动 Fastify 服务器并监听端口:
fastify.listen(3000, (err) => {
if (err) {
fastify.log.error(err);
process.exit(1);
}
fastify.log.info('Server listening on http://localhost:3000');
});通过以上步骤,你就可以在 Fastify 应用中使用 fastify-session 插件来处理会话了。