栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用JWT验证套接字io连接

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用JWT验证套接字io连接

令牌是否在另一台服务器上创建都没有关系。如果您拥有正确的密钥和算法,您仍然可以验证它。

jsonwebtoken
模块实施

客户

const {token} = sessionStorage;const socket = io.connect('http://localhost:3000', {  query: {token}});

服务器

const io = require('socket.io')();const jwt = require('jsonwebtoken');io.use(function(socket, next){  if (socket.handshake.query && socket.handshake.query.token){    jwt.verify(socket.handshake.query.token, 'SECRET_KEY', function(err, depred) {      if (err) return next(new Error('Authentication error'));      socket.depred = depred;      next();    });  }  else {    next(new Error('Authentication error'));  }    }).on('connection', function(socket) {    // Connection now authenticated to receive further events    socket.on('message', function(message) {        io.emit('message', message);    });});

socketio-jwt
模块实施

此模块使客户端和服务器端的身份验证更加容易。只是看看他们的例子。

客户

const {token} = sessionStorage;const socket = io.connect('http://localhost:3000');socket.on('connect', function (socket) {  socket    .on('authenticated', function () {      //do other things    })    .emit('authenticate', {token}); //send the jwt});

服务器

const io = require('socket.io')();const socketioJwt = require('socketio-jwt');io.sockets  .on('connection', socketioJwt.authorize({    secret: 'SECRET_KEY',    timeout: 15000 // 15 seconds to send the authentication message  })).on('authenticated', function(socket) {    //this socket is authenticated, we are good to handle more events from it.    console.log(`Hello! ${socket.depred_token.name}`);  });


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/436532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号