如何使用 socketio-jwt 处理 socket.io 中的身份验证错误
How to handle authentication errors in socket.io with socketio-jwt
按照 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))
?
查看 jwt 的源代码,它们实际上是在发出 "unauthorized",而不是 "error"。更改为
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");
}
});
还报告了文档和示例中的这个错误 here。
按照 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))
?
查看 jwt 的源代码,它们实际上是在发出 "unauthorized",而不是 "error"。更改为
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");
}
});
还报告了文档和示例中的这个错误 here。