0

按照https://github.com/auth0/socketio-jwt的示例,我无法触发身份验证失败。

您应该如何使用此库处理和配置身份验证错误?我在源代码中看到它应该抛出一个UnauthorizedError但我似乎无法触发它。

服务器端

  io
    .on('connection', socketioJwt.authorize({
      secret: 'test',
      timeout: 7000
    }))
    .on('authenticated', (socket) => {
      console.log('connected user: ' + socket.decoded_token.name);
    });

客户端

  socket.on('connect', function () {
    socket.emit('authenticate', {token: 'badtoken'}); //send the jwt
  });

  socket.on("error", function(error) {
    // this never fires
    if (error.type == "UnauthorizedError" || error.code == "invalid_token") {
      alert("User's token has expired");
    }
  });

我是否还需要.on('error, function(error))在服务器上添加代码?

4

1 回答 1

1

查看 jwt 的源代码,它们实际上发出的是“未经授权”,而不是“错误”。改成

 socket.on("unauthorized", function(error) {
    // this should now fire
    if (error.data.type == "UnauthorizedError" || error.data.code == "invalid_token") {
      alert("User's token has expired");
    }
  });

此处还报告了文档和示例中的此错误。

于 2015-12-17T18:12:16.123 回答