请描述在 Koa 应用里如何实现会话跟踪,具体包含哪些步骤和中间件?
考察说明
考查 Koa 中间件概念和会话管理的实现方式
回答思路
- 【回答框架 1】Session 机制是在服务端存储用户状态,通过客户端携带的会话标识(通常是 Cookie 中的 sessionId)来识别同一用户。Koa 本身不内置 Session,通常借助 koa-session 或 koa-session-minimal 等中间件实现。
- 【回答框架 2】实现步骤:首先安装并引入 koa-session,配置密钥 keys、cookie 名称、过期时间等选项;然后在应用实例上通过 app.use(session(app)) 挂载中间件,之后每个请求的 context 上会挂载 session 对象,可以读写用户数据。
- 【回答框架 3】在具体业务路由中,通过 ctx.session.xxx 来存取会话数据,比如登录后设置 ctx.session.user = user;当需要验证时检查该字段是否存在。会话数据默认保存在内存中,生产环境可接入 Redis 等外部存储实现共享与持久化。
- 【关键点 1】Session 依赖 Cookie 传递会话标识,服务端保存数据
- 【关键点 2】Koa 使用中间件机制,通过 koa-session 挂载在 context 上
- 【关键点 3】生产环境建议使用 Redis 存储 Session,保证多实例一致性
- 【易错点 1】不设置 keys 会报错或产生安全漏洞
- 【易错点 2】默认内存存储不适用于多进程或多服务器场景,会导致会话丢失