我想使用connect的模块connect.session
和connect.cookieParser
在我的Express应用程序中使用安全cookie。根据文档,两者都接受secret
参数。此密钥用于防止用户篡改cookie。
我应该为两个模块设置相同的密钥,还是两个不同的模块?或者我应该只将密钥传递给其中一个?
答案 0 :(得分:5)
您只需要设置一个或另一个。但是,您可以传递给每个人,以便为他们提供不同的secret
来使用。
他们之间的区别在于他们所说的" 贪婪"用它。
session(secret)
会将secret
保留给自己,只会将其用于持有会话ID的Cookie。
cookieParser(secret)
将允许任何cookie签名。
您可以使用Express'创建已签名的Cookie response.cookie()
此方法也支持签名的cookie。只需传递
signed
选项即可。如果给定res.cookie()
,则会使用传递给express.cookieParser(secret)
的密码对该值进行签名。res.cookie('name', 'tobi', { signed: true });
稍后您可以通过req.signedCookies对象访问此值。