首页 > 解决方案 > Cookie 会话,使用秘密而不是密钥

问题描述

我的 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数组中的项目来加密密钥,服务器如何知道使用哪个密钥?如果不同的响应需要不同的密钥来解密怎么办?

标签: node.jsexpresscookie-session

解决方案


推荐阅读