我最近在我的快递服务器上实施了 passport.js 以进行身份验证。我也在尝试为我的 socket.io 服务器利用此身份验证。所以我正在尝试使用 passport.socketio 包来执行此操作。
我这样使用它:
io.use(async (socket, next) => {
console.log("pre auth")
await passportSocketIo.authorize({
cookieParser: cookieParser, // the same middleware you registrer in express
key: 'auth', // the name of the cookie where express/connect stores its session_id
secret: 'keyboard cat', // the session_secret to parse the cookie
store: tediousConfig, // we NEED to use a sessionstore. no memorystore please
success: onAuthorizeSuccess, // *optional* callback on success - read more below
fail: onAuthorizeFail, // *optional* callback on fail/error - read more below
})
console.log("post auth")
}
成功和失败回调是:
function onAuthorizeSuccess(data, accept){
console.log("Success connection to socket.io");
accept();
}
function onAuthorizeFail(data, message, error, accept){
if(error)
throw new Error(message);
console.log("failed connection to web socket", message);
}
但是,当我尝试连接时,我同时收到“pre auth”和“post auth”的控制台消息,但没有来自授权功能的消息,也没有任何错误消息。
任何帮助将不胜感激!