パスポートのローカル戦略を使用してユーザーを認証し、connect-mongoを sessionstore モジュールとして使用してパスポート/エクスプレス セッションをmongodbに保存し、 passport.socketioを統合 し、使用してユーザーを承認しました。
io.use(passportSocketIo.authorize({
cookieParser: cookieParser,
secret: 'sessionSecret',
store: sessionStore,
success: onAuthorizeSuccess,
fail: onAuthorizeFail,
}));
onAuthorizeSuccess関数から、パスポートからのログに記録されたdata.userをコンソールしました。これで、サーバー上のデータにアクセスできます。しかし、クライアント側のパスポートユーザーであるreq.userにアクセスするにはどうすればよいですか。
data.userはreq.userと同じ結果を返します
function onAuthorizeSuccess (data,accept){
console.log("data from socket: "+data.user);
console.log('successful connection to socket.io');
}
私のクライアント側のコード
$(document).ready(function () {
var socket = io.connect("http://localhost:3000/chat");
socket.on('connect', function () {
//how to access passport user here
console.log("connection establised");
});
});
私のサーバー側コード
module.exports = function (io) {
var chat = io.of("/chat").on("connection", function () {
console.log("connection established on the server");
});
};