gpt4 book ai didi

session - 套接字请求的 Sails.js 授权

转载 作者:行者123 更新时间:2023-12-04 07:23:38 24 4
gpt4 key购买 nike

我正在尝试基于sails.js 构建一个聊天应用程序。来自特定聊天的消息的 url 如下所示:
/api/chat/:id/messages
当我用 XHR 请求这个 url 时,它提供了一个 session cookie 并且sails.js 构建了一个 session 对象。我可以轻松检查用户从特定聊天中读取消息的权限。

但是,我需要使用 socket.io 请求此 url,以便客户端可以订阅 messages 的所有 future 更改。收藏。

当我使用 socket.io 请求这个 url 时,没有设置 session cookie 并且sails.js session 是空的。因此,我无法检查服务器端的用户权限。

我知道套接字请求不是 HTTP 请求。他们自己不提供任何 cookie。

有什么简单的解决方法吗?

最佳答案

我找到了一种方法来获取在 socket.io 握手时设置的 session 对象。
在您的 Controller 中,您应该执行以下操作:

myControllerAction: function(req, res) {
var session = req.session;
if (req.isSocket) {
var handshake = req.socket.manager.handshaken[req.socket.id];
if (handshake) {
session = handshake.session;
}
}
//session now contains proper session object
}

你可以在sails.js 策略中实现这个,并将这个策略附加到一些 Controller 。但是不要将您的套接字 session 写入 req.session !否则,您将在尝试响应客户端时遇到错误(原始 req.session 仍以某种方式使用)。相反,将其另存为 req.socketSession或类似的东西。

关于session - 套接字请求的 Sails.js 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18246681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com