我的 cookie 会话设置如下:
app.use(require("cookie-session")({
name: 'session',
secret: keys.session.secret,
maxAge: 1 * 25 * 60 * 1000
}));
我正在阅读文档,示例设置如下:
name: 'session',
keys: [/* secret keys */],
// Cookie Options
maxAge: 24 * 60 * 60 * 1000 // 24 hours
}))
文档还说秘密是:
如果未提供键,则将用作单个键的字符串。
我对键数组的工作方式感到困惑。当它是单个秘密时,服务器知道该秘密并使用相同的秘密来解密请求。
关于键数组,文档说:
用于签署和验证 cookie 值的密钥列表,或配置的 Keygrip 实例。设置的 cookie 始终使用 keys[0] 签名,而其他密钥对验证有效,允许密钥轮换。
如果随机选择keys数组中的项目来加密密钥,服务器如何知道使用哪个密钥?如果不同的响应需要不同的密钥来解密怎么办?