我正在尝试通过sailsjs和使用套接字进行身份验证passport.
挑战似乎是套接字连接没有会话,并且sailsjs模拟了一个请求对象,导致它没有Passport中间件设置.这导致nodejs抛出一个错误,说该req对象没有调用的方法logIn.
所以,我已经尝试按照@xdissent在这里提供的代码片段:Sails.js + Passport.js通过websockets进行身份验证,这确实允许我登录而不会抛出错误.还是......?事实证明它做了一些事情,但我不知道是什么.因为在获取req.user不同的(套接字)请求时,我得到一个返回的空对象.
我也看过redis.这出来了:
redis 127.0.0.1:6379> keys *
1) "waterline:broadcasting:_sequences:id"
2) "sess:aDJI0YHzh17E3AMjtKsZSijs"
redis 127.0.0.1:6379> get "sess:aDJI0YHzh17E3AMjtKsZSijs"
"{\"cookie\":{\"httpOnly\":true,\"path\":\"/\"}}"
redis 127.0.0.1:6379>
Run Code Online (Sandbox Code Playgroud)
所以有一个会话,没有用户存储在其中.
长话短说,如何让Passport和sailsjs在插座上玩得很好.
更新:我想了解一般有关帆的会话,套接字和cookie的一些信息.因此,如果我在会话中设置内容并刷新浏览器,我希望它仍然存在.如果我在与套接字连接相同的页面上进行xhr调用,那么这不应该是同一个会话吗?
我正在使用admin-on-rest来构建我们的下一个仪表板.我希望能够在标题前面的标题中添加徽标/图像.这会涉及一个自定义主题,还是有一种侵入性较小的方式?
我正在使用sails构建一个私人消息传递系统,但这个问题几乎适用于任何事情.我将使用消息传递系统作为示例,使问题更加清晰.作为一些背景信息,我正在使用最新的风帆0.10 RC.
Sails允许您将redis用于会话和pubsub,这允许您扩展多个服务器.这一切都很整洁,工作非常出色,但它让我想到如何将事件发布到特定的连接套接字(客户端).
有时您希望仅向参与者发布事件,就像私人消息系统一样.应该只通知作者和收件人线程中的新消息.你会怎么做到这一点?我知道您可以将客户订阅到特定的模型实例,通知客户端所述模型的更改; 我也知道可以将客户端订阅到模型,通知他们新创建(保存)的模型实例.这是后者,create动词给我带来了一些麻烦.我不希望每个使用消息传递系统的人都在他们不在的线程中接收新消息的更新.这将是一个隐私问题.
如何create根据相关模型上的属性(author和recipient)值过滤哪些客户端接收动词事件?有没有其他方法可以确保只有这些客户端接收模型的更新?
我使用 firebase JS sdk 将音频文件上传到 firebase-storage。发生这种情况时,我需要根据进行上传的经过身份验证的用户来处理它(我将其上传到其他地方进行处理)。这意味着我需要在通过存储规则验证 uid 后才能访问该 uid,以确保其安全。
在研究这个问题时,我发现了一些解决方法,例如使用元数据发送用户的 ID 令牌,但在我看来这是一个坏主意,因为它可能被滥用。
我发现这个问题也几乎正是我的问题。我链接的问题已经存在一年多了,所以我认为值得再次询问。
我认为主要原因是存储规则,它确实可以访问 uid ( https://firebase.google.com/docs/storage/security/user-security )。如果我可以使用那里的 uid 来允许/禁止访问,我假设也可以在我的 onFinalize 触发器中访问 uid。我只是似乎无法找到如何。
firebase firebase-authentication google-cloud-functions firebase-storage
sails.js ×2
firebase ×1
javascript ×1
node.js ×1
passport.js ×1
reactjs ×1
socket.io ×1
sockets ×1