Connect的会话中间件的签名cookie如何工作?

我想要解释一下connect.sid cookie如何在Connect Node.js框架中工作。 我注意到他们是形成的,

s:hash.signature 

我不明白如何使用签名,当散列能够被用来从内存存储或redis存储访问会话数据。

另外,我不明白为什么s:甚至在cookie中; 这是什么目的。

我听说签名被用来“签名”散列。 究竟是“签名”还是“签名”? 我也需要对这个过程进行解释。

谢谢!

签名是在那里,所以服务器可以validation它产生的cookie,而不是一些随机的攻击者。

只有知道签名秘密的人可以用相同的值签名。

“s:”在那里,所以很容易知道它是一个签名的cookie,而不是一些其他格式(如无符号)。

这是一种从签名cookie中检索数据的方法,失败是签名不正确。 只有从实际应用程序中提取的部分代码,但你应该明白了。

 var cookie = require('cookie'); var connect = require('connect'); var secret = "same secret used to sign cookies"; socketio.set('authorization', function(data, cb) { if (data.headers.cookie) { var sessionCookie = cookie.parse(data.headers.cookie); var sessionID = connect.utils.parseSignedCookie(sessionCookie['connect.sid'], secret); // do something here with decoded value } }); 

您需要使用socket.io中的“授权”function,才能访问标题。 该代码在使用xhr-polling传输时起作用,我不确定这是否适用于websocket。