如何使用 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
如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)