[英]What are the possible ways to authorize a websocket connection request in Express.io?
我遇到了两种可能性,并且希望有一种在完全建立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();
}
});
您可以传递对会话存储的引用,以便在配置套接字服务器时可以使用它:
var sessionStore = new express.session.MemoryStore();
app.use(express.session({secret: process.env.COOKIESECRET, store: sessionStore}));
我认为您应该能够通过将handshake.headers
对象与会话存储中的内容进行匹配来从那里获得其余的信息。 请注意,默认存储区保存在内存中,这对于生产目的而言并不理想(但现在看来还不错)。 以上与您的选项1方法有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.