问题标签 [passport.socketio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
399 浏览

express - 如何在全局范围内同时使用 express.io 和 passport.socketio 身份验证功能

socket.io 支持单一的全局授权方法,没有中间件功能。express.io 和 passport.socketio 都依赖此功能作为其逻辑的注入点。

express.io 将 express 会话附加到请求,passport.socketio 附加膨胀的用户对象。如何优雅地结合这两个功能?

0 投票
1 回答
1107 浏览

mongodb - Socket.io、Passport、MongoDB 和 passport.socketio 在生产中损坏

我在 socket.io 上构建了一个 nodejs 应用程序中继,使用 Passport 和 passport.socketio 进行身份验证和授权,使用 mongodb 和 connect-mongo 进行会话存储。

它在我的笔记本电脑上运行良好,但是当我迁移到云 (Azure-VM) 时,我开始遇到奇怪的错误。

2014 年 5 月 2 日,11:47:06.500 监听端口 8081 (https)

任何想法从哪里开始?

0 投票
1 回答
578 浏览

node.js - Primus.io 和 passport.js

我考虑从Socket.io 迁移Primus.io(由于可伸缩性错误),但我缺少的一个主要插件是 primus- passportjs授权插件(类似于passport.socketio)。

你知道任何这样的插件或代码示例吗?

0 投票
2 回答
1986 浏览

node.js - 如何在有护照的风帆中使用passport.socketio

用户登录后使用 socketio 时收到以下错误。我找到了可能解决这个问题的passport-socketio,但我不知道如何将它集成到sails.js。你知道任何代码示例吗?认为

0 投票
2 回答
1079 浏览

javascript - 护照-socketio 打破护照实施?

这是我的套接字配置:

这是 login 的护照实现,在没有 passport.socketio 的情况下效果很好:

这是我收到的错误,我不知道如何解决它:

为什么要在用户对象上运行某种函数?我不明白!如果我将 done 方法留空,它不会崩溃,但也没有设置会话并且我没有登录。

0 投票
0 回答
997 浏览

node.js - Node.js socket.io 状态行不以 CRLF 结尾

每次 socket.io 尝试连接时,我都会遇到错误(chrome 33 / firefox 24):

WebSocket 连接到“wss://playground-c9-doum.c9.io/socket.io/1/websocket/QBGO1ZlPhWUBkMVQ9cUP”失败:WebSocket 握手期间出错:状态行不以 CRLF socket.io.js:2371 结尾

在服务器端:

客户端 :

我正在使用 express、passport、passport-socket.io ......

我不认为问题出在passport-socket.io,因为我尝试删除套接字配置(io.set('authorization'))的'auth'部分,但我遇到了同样的问题。

我还尝试为客户端 socket.connect(url) 提供一个特定的 url,但也没有工作。

Socket.io 并没有完全失败,websocket 连接被中止,所以它开始 xhr-polling(很痛苦......)。

做了很多研究,没有发现任何关于这个问题的东西(还在 github 上发布了一个新问题)。

npm socket.io -v give 1.3.8 /socket.io/socket.io.js (client) is Socket.IO.js build:0.9.16

0 投票
2 回答
2848 浏览

deserialization - passport.socketio 的护照“无法将用户反序列化出会话”。但是我的主应用程序中的护照(使用相同的密钥)反序列化就好了

passport.socketio 抛出此错误,同时未能授权用户。

错误:错误:无法将用户反序列化出会话

我已将问题缩小到 passport.socketio 的问题/lib/index.js

在第 59 行

它抛出该错误。调试器告诉我它userKey是有效的,应该反序列化用户。这与我的主应用程序中的护照用于反序列化用户的密钥相同。(这是 mongoDB 对象的 ID)。我的主应用程序中的护照在反序列化用户时没有问题。(详细信息)所以不知道为什么这仍然会引发错误。

userKey此处传递的密钥与我的主应用程序中用于反序列化的密钥护照相同。

我已经达到了制作userKey全局并将其放入我的主要代码的程度

这会导致无限循环(因为它在外部 passport.deserialize 内部)但 iut 打印“ok”!所以我的主应用程序中的护照可以使用与 index.js 中的护照相同的东西至少反序列化(passport.socketio\lib\ index.js) 不能!.. 由于某些原因。

然后我什至尝试从主应用程序传递护照对象本身

这实际上不会导致错误!但后来我没有得到socket.handshake对象。

我没有进一步诊断的想法,并且非常感谢任何帮助。

What could be causing passport.socketio's passport to not "deserialize user out of session"?

0 投票
1 回答
1207 浏览

node.js - 当用户被授权添加到会话时如何打开套接字连接?

我正在尝试设置一个快速服务器,其中将在使用本地护照进行用户身份验证时启动套接字连接。我在配置护照的文件的最后一行收到错误“TypeError:对象不是函数”。

这是我的 passport.js 文件:

这是我的 server.js 文件:

我的 routes.js 中处理登录的部分:

如果我注释掉io.set('authorization'函数,用户好像在认证。我以为函数所做的就是使用passport认证函数来允许建立一个socket连接。为什么突然不当我尝试启动套接字连接时进行身份验证?

我不认为我完全理解身份验证的工作方式。当我提交登录表单时,我会向“dirname/login”发送一个帖子,该帖子在我的 routes.js 文件中处理。passport.authenticate 是收到帖子时要运行的回调,然后在我的数据库中搜索播放器,如果收到正确的用户名和密码,播放器对象将被序列化并添加到会话中。socket.io 是从哪里来的?io.set('authorization' 函数是否添加了一个监听器来查看用户何时通过身份验证?

对不起,代码墙,我是节点新手,我不完全理解这个过程。

0 投票
0 回答
161 浏览

node.js - Express.io 是否具有重新加载会话数据的属性授权?

我一直在实现套接字概念,如https://github.com/techpines/express.io/tree/master/examples/sessions,我能够显示页面初始化后存储的会话数据。但是,尽管如此,当会话数据在一段时间内不断变化时,我得到的会话数据未定义。

但是使用 socket.io 授权和握手会话可以很好地完成类似的概念,提供链接http://www.danielbaulig.de/socket-ioexpress/

客户端代码:

服务器端代码:


在控制台中,它在每次发出时都打印为未定义...我想知道为什么套接字会话没有更新,因为原始用户会话不断变化...???

我是否需要在服务器端添加任何额外的配置来处理更改的会话数据???

0 投票
1 回答
1604 浏览

javascript - Node.JS + Passport.SocketIO:编辑和保存 `socket.handshake.user` 属性

我正在使用 Node.JS (0.10.28)、Passport.JS (0.2.0) + Passport-Google (0.3.0) 和 Passport.SocketIO (3.0.1)。


目前,我可以使用以下方法访问由 Passport.JS 在我的应用程序路径中创建的用户req.user

使用 Passport.SocketIO,我还可以访问用户:

也可以req.user通过req._passport.session.user.property = new_property_valueapp.get/post/all(...)范围内使用来编辑和“保存”它。然后更新显示在io.sockets.on(...)用户对象中。

我的问题是:是否可以socket.handshake.userio.sockets.on(...)范围内编辑和“保存”,以便更新后的用户将在req.user中显示更改app.get/post/all(...)?我尝试了以下方法无济于事: