当前位置: 首页 > 面试题库 >

我可以从Socket.io访问cookie吗?

邢博文
2023-03-14
问题内容

我想在cookie中设置一些用户信息并能够在连接时访问它,这可能吗?


问题答案:

client.request.headers.cookie 由于Cookie始终指向最后登录的用户,因此会导致竞争情况。

请参阅:Socket.IO身份验证

使用connect-redis并将redis用作所有经过身份验证的用户的会话存储。确保通过身份验证将密钥(通常是req.sessionID)发送给客户端。让客户端将此密钥存储在cookie中。

在套接字连接(或以后的任何时间)上,从cookie中获取此密钥并将其发送回服务器。使用此密钥以redis方式获取会话信息。(获取密钥)

例如:

服务器端(使用redis作为会话存储):

req.session.regenerate...
res.send({rediskey: req.sessionID});

客户端:

//store the key in a cookie
SetCookie('rediskey', <%= rediskey %>); //http://msdn.microsoft.com/en-us/library/ms533693(v=vs.85).aspx

//then when socket is connected, fetch the rediskey from the document.cookie and send it back to server
var socket = new io.Socket();

socket.on('connect', function() {
  var rediskey = GetCookie('rediskey'); //http://msdn.microsoft.com/en-us/library/ms533693(v=vs.85).aspx
  socket.send({rediskey: rediskey});
});

服务器端:

//in io.on('connection')
io.on('connection', function(client) {
  client.on('message', function(message) {

    if(message.rediskey) {
      //fetch session info from redis
      redisclient.get(message.rediskey, function(e, c) {
        client.user_logged_in = c.username;
      });
    }

  });
});


 类似资料:
  • 我正在评估Netty作为我们内部开发的网络堆栈的替代品和/或替代品。整体设计非常相似,除了一个问题外,很容易更换。 在我们的服务器进程中,我们有时需要直接访问SocketChannel,以便使用通道将数据发送到客户端。transferTo()我看不到访问Netty中SocketChannel的方法。例如,ChannelHandlerContext接口中没有任何内容。 我将开始挖掘源代码,但是有人知

  • 问题内容: 是否有可能在另一个文件内部使用一个文件中的变量? 包含一个名为的变量。 问题答案: 正如Fermin所说,声明后,所有加载的脚本都应可以访问全局范围内的变量。您也可以使用或的属性(在全局范围内)获得相同的效果。 …在另一个文件中… …在您的html文件中…

  • 我是Hadoop的新手,并且在AWS弹性MapReduce下运行。 我需要在Hadoop中使用集群范围的原子计数器,因此有人建议使用zookeeper。 我相信zookeeper是Hadoop堆栈的一部分(对吗?),我如何从弹性Mapreduce作业访问它,以便设置和更新集群范围内的计数器?

  • 问题内容: 有什么方法可以将Socket.IO http://socket.io/与Django 一起使用? 问题答案: 你当然可以! Django本身并不异步,因此你必须与普通的django服务器并行使用Socket.IO服务器,node.js始终不是一个不错的选择,但也存在使用纯Python编写的其他服务器。

  • 我在OpenID Connect中使用KeyCloak。 我在与KeyCloak相同的域上有一个应用程序。此应用程序有一个终结点,该终结点将授权代码作为参数,并在响应中设置“KEYCLOAK_IDENTITY”cookie 以启用 SSO。 它有效,但这样做安全吗? 编辑:我的问题是关于饼干的。我解释“为什么”只是为了给出一些背景。 编辑2:对于想要使用这个解决方案的人来说,我真的很关心钥匙斗篷社

  • 我的项目在Java1.8u151中运行良好。我正在尝试将它升级到Java12,但是我得到了以下错误。 这是唯一的错误,在Java12中的大多数包中都会重复出现,但在Java8中效果良好。 我已尝试将所有jar文件从模块路径移动到类路径。模块路径中只有Java 12库。我在Java版本的软件包中寻找任何不推荐的东西。我用不同的Java版本尝试了3种不同的系统(都运行OS-X10.13.6、10.13