如何使用 Socketio-jwt node.js 对用户进行身份验证

Posted

技术标签:

【中文标题】如何使用 Socketio-jwt node.js 对用户进行身份验证【英文标题】:How to Authenticate user using Socketio-jwt node.js 【发布时间】:2016-05-16 20:43:51 【问题描述】:

我在Github socketio-jwt 上问了这个问题。 3天后没有答案,谷歌也找不到任何答案。

问题一:

在连接时检查令牌是否足够安全?我需要检查每个事件的令牌吗? 例如。检查每个 getNews 事件

socket.on("getNews", function(data, callback)
// check token and if valid return news via callback
);

检查连接/重新连接

io.use(function(socket, next)  // using general example not socketio-jwt
// check token and if valid proceed
);

问题2:

如何知道特定令牌属于哪个用户?一种方法是将 id 添加到有效负载中,但是,这是最佳做法吗?

【问题讨论】:

那你做了什么?我现在处于相同的情况,即如何知道该请求属于哪个用户,以便我们可以使用适当的 SECRET_KEY(可能是 id+msisdn 的混合)来验证用户。 说实话我不记得我做了什么。但据我了解,如果您使用的是wss://,您只需要检查连接上的令牌,而不是 WebSockets 的每个事件。虽然,据我了解,socket.io 使用长轮询、闪存套接字等......在这种情况下,可能值得检查每个事件。 对于id,您可以使用io.engine.generateId 更改id,以便您知道哪个用户属于哪个套接字。 【参考方案1】:

我会检查每个事件的令牌,以确保。

是的,将用户 ID 添加到您的有效负载中很好 - 只要您的秘密保持秘密。

【讨论】:

以上是关于如何使用 Socketio-jwt node.js 对用户进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

将 connectParams 与 JWT 一起使用时,Socket.connect() 不一致

服务器重新启动socket.io socketio-jwt后Angular 6验证客户端

如何使用 Express JS/Railway JS (Node.JS) 生成 JSON

如何决定何时使用 Node.js?

如何决定何时使用 Node.js?

如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)