0

私は 2 つの可能性に遭遇しましたが、websocket を完全に確立する前にチェックを実行するソリューションを好みます。

var express = require("express.io");
var app = express().http().io();

app.use(express.json());
app.use(express.cookieParser());
app.use(express.session({secret: process.env.COOKIESECRET}));

オプション 1: Express セッション オブジェクトを取得する方法
更新: Express.io は、Express セッションを Socket.io で使用できるようにする独自の「承認」機能を登録するため、これは機能しない可能性があります。

app.io.configure(function() {
  app.io.set("authorize", function(handshake, authorize) {
    // Cookie is available...?
    //handshake.headers.cookie
  });
});

オプション 2: Express セッションを取得するのは簡単ですが、接続は既に確立されています。

app.io.route("test", function(req) {
  if(!req.session.IsAuthorized) {
    req.io.disconnect();
  }
});
4

1 に答える 1

1

ソケット サーバーを構成するときに使用できるように、セッションストアへの参照を渡すことができます。

var sessionStore = new express.session.MemoryStore();

app.use(express.session({secret: process.env.COOKIESECRET, store: sessionStore}));

handshake.headersオブジェクトをセッションストア内のものに一致させることで、そこから残りを取得できるはずです。デフォルト ストアはメモリ内に保持されるため、運用目的には適していないことに注意してください (ただし、現時点では問題ないと思います)。上記は、オプション 1 の方法に関連しています。

于 2014-02-18T21:03:02.417 に答える