如何验证socket.io连接?我的应用程序使用另一个服务器(python)的登录端点来获取令牌,无论何时用户在节点端打开套接字连接,我如何使用该令牌?
io.on('connection', function(socket) {
socket.on('message', function(message) {
io.emit('message', message);
});
});
而客户端:
var token = sessionStorage.token;
var socket = io.connect('http://localhost:3000', {
query: 'token=' + token
});
如果令牌是在python中创建的:
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
如何使用这个令牌来验证节点中的套接字连接?
4条答案
按热度按时间zdwk9cvp1#
令牌是否在另一台服务器上创建并不重要,只要您有正确的密钥和算法,您仍然可以验证它。
使用
jsonwebtoken
模块实现客户
服务器
使用
socketio-jwt
模块实现这个模块使得客户端和服务器端的认证都变得更加容易。看看他们的例子就知道了。
客户
服务器
htrmnn0y2#
由于我没有足够的信誉,无法在已接受的答案中添加评论:
常数socketio_jwt =要求值(“socketio_jwt”);
实际上并不是auth 0的repo的一部分,而是一个基于第三方社区的包。
上面的答案应该更新,因为到auth 0 repo的链接是一个页面404。
whitzsjs3#
在这里,我写了一篇关于如何在套接字上验证用户身份以及如何保存用户数据的深入文章
https://medium.com/@tameemrafay/how-to-authenticate-user-and-store-the-data-in-sockets-19b262496feb
客户端代码
服务器端代码
tcbh2hod4#
编写中间件:
在套接字服务器内部使用