Node.js connect.session和connect.cookieParser的秘密之间的区别?

Node.js connect.session和connect.cookieParser的秘密之间的区别?,node.js,session,cookies,express,connect,Node.js,Session,Cookies,Express,Connect,我想使用connect的模块和在Express应用程序中使用安全cookie。根据文档,两者都接受secret参数。此密钥用于防止用户篡改cookie 我应该为两个模块设置相同的键,还是为两个不同的模块设置相同的键?或者我应该只将一个密钥传递给其中一个吗?您只需要使用其中一个进行设置。不过,您可以传递给每个人,以便为他们提供不同的secrets以供使用 他们之间的区别在于他们对它的所谓“贪婪” session(secret)将保留机密,仅用于保存会话ID的cookie 另一方面,cookieP

我想使用connect的模块和在Express应用程序中使用安全cookie。根据文档,两者都接受
secret
参数。此密钥用于防止用户篡改cookie


我应该为两个模块设置相同的键,还是为两个不同的模块设置相同的键?或者我应该只将一个密钥传递给其中一个吗?

您只需要使用其中一个进行设置。不过,您可以传递给每个人,以便为他们提供不同的
secret
s以供使用

他们之间的区别在于他们对它的所谓“贪婪”

  • session(secret)
    将保留
    机密
    ,仅用于保存会话ID的cookie

  • 另一方面,cookieParser(secret)将允许对任何cookie进行签名

    您可以使用“Express”创建签名cookie

    此方法还支持签名cookie。只需传递带签名的
    选项即可。当给定时,
    res.cookie()
    将使用传递给
    express.cookieParser(secret)
    的秘密对值进行签名

    res.cookie('name', 'tobi', { signed: true });
    
    稍后,您可以通过对象访问此值


太好了,如果我理解正确,它们是完全独立的吗?也就是说,如果我使用两个不同的密钥,就不会出现某种密钥不匹配的问题?@Tom Well,
session()
将使用传递给
cookieParser()
secret。但是,除此之外,是的。他们不应该与每个人都有自己的
秘密
相冲突。谢谢乔纳森。这是否意味着对解析器和会话中间件使用相同的密钥比使用两个单独的密钥更安全?