我非常菜鸟,我有这个功能来进行授权。
io.set('authorization', function (handshakeData, accept) {
// check if there's a cookie header
if (req.session.user) {
accept(null, true);
}else{res.redirect("/");
accept("NO AUTORIZADO!", false);
}
});
next()
});
我希望在连接websockets之前在会话中对用户进行身份验证
答案 0 :(得分:1)
假设您使用express with redis作为会话存储,您可以使用以下代码验证会话。
var cookie = require('cookie'),
connect = require('connect');
io.set('authorization', function (handshakeData, accept) {
if (handshakeData.headers.cookie) {
handshakeData.cookie = cookie.parse(handshakeData.headers.cookie);
handshakeData.sessionID = 'sess:'+connect.utils.parseSignedCookie(handshakeData.cookie['connect.sid'], config.session_secret);
sredis.get(handshakeData.sessionID, function (err, session) {
if (err || !session) {
accept('could not load the session', false);
} else {
handshakeData.session = JSON.parse(session);
accept(null, true);
}
});
} else {
return accept('No cookie transmitted.', false);
}
});
答案 1 :(得分:0)
然后您可以使用https://github.com/jfromaniello/passport.socketio进行socket.io通信