【发布时间】:2014-02-20 06:48:39
【问题描述】:
我正在尝试通过带有sailsjs 和passport 的套接字进行身份验证。
挑战似乎在于套接字连接没有会话,并且sailsjs 模拟请求对象,导致它没有设置 Passport 中间件。这导致nodejs抛出一个错误,说req对象没有一个名为logIn的方法。
所以,我尝试按照@xdissent 提供的代码 sn-p 在这里:Sails.js + Passport.js authentication through websockets 这确实允许我登录而不会引发错误。或者它..?事实证明它做了something,但我不知道是什么。因为在通过不同的(套接字)请求获取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>
所以有一个会话,只是没有存储用户。
长话短说,我如何让 Passport 和sailsjs 在套接字上运行良好。
更新: 我想要一些关于会话、套接字和一般情况下带有帆的 cookie 的信息。因此,如果我在会话中设置内容并刷新浏览器,我希望它仍然存在。如果我在与套接字连接相同的页面上进行 xhr 调用,那不应该是同一个会话吗?
【问题讨论】:
-
赞成这是一个我还没有找到答案的好问题。
-
+1 您是否已经找到解决问题的方法?
-
你实现serializeUser和deserializeUser了吗?
-
@Jason Nichols passport.socketio 不会实现 Wesley 要求的护照请求方法。
标签: node.js sockets socket.io sails.js passport.js