我遇到了两种可能性,我更喜欢在完全建立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 session对象?
更新:这可能是不可行的,因为Express.io注册了自己的"authorize“函数,这使得Socket.io可以使用Express会话。
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();
}
});发布于 2014-02-19 05:03:02
您可以传入对sessionstore的引用,以便在配置套接字服务器时可用:
var sessionStore = new express.session.MemoryStore();
app.use(express.session({secret: process.env.COOKIESECRET, store: sessionStore}));我认为您应该能够通过将handshake.headers对象与您的会话存储中的内容进行匹配来从中获取其余的内容。请注意,默认存储保存在内存中,这对于生产目的来说并不是很好(但我想现在还不错)。以上内容与您的选项1方法有关。
https://stackoverflow.com/questions/21859153
复制相似问题