当前位置 : 主页 > 网页制作 > Nodejs >

node.js – Connect的会话中间件的签名cookie如何工作?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我想解释connect.sid cookie如何在Connect Node.js框架中工作.我注意到它们被编织成了, s:hash.signature 我不明白当哈希能够用于从内存存储或redis存储中访问会话数据时如何使用签名. 另外,我不明
我想解释connect.sid cookie如何在Connect Node.js框架中工作.我注意到它们被编织成了,

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是否有效.

网友评论