我想解释connect.sid cookie如何在Connect Node.js框架中工作.我注意到它们被编织成了, s:hash.signature 我不明白当哈希能够用于从内存存储或redis存储中访问会话数据时如何使用签名. 另外,我不明
s:hash.signature
我不明白当哈希能够用于从内存存储或redis存储中访问会话数据时如何使用签名.
另外,我不明白为什么s:甚至在cookie中;这是什么目的.
我听说签名用于“签名”哈希. “签署”或“签名”究竟是什么意思?我也需要对这个过程进行解释.
谢谢!
签名就在那里,所以服务器可以验证它是否生成了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中的“授权”功能,以便您可以访问标头.使用xhr-polling传输时该代码有效,我不确定这对于websocket是否有效.