首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Express.io中授权websocket连接请求的可能方式有哪些?

在Express.io中授权websocket连接请求的可能方式有哪些?
EN

Stack Overflow用户
提问于 2014-02-19 00:08:07
回答 1查看 146关注 0票数 0

我遇到了两种可能性,我更喜欢在完全建立websocket之前执行检查的解决方案。

代码语言:javascript
复制
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会话。

代码语言:javascript
复制
app.io.configure(function() {
  app.io.set("authorize", function(handshake, authorize) {
    // Cookie is available...?
    //handshake.headers.cookie
  });
});

选项2:很容易获得Express会话,但连接已经建立。

代码语言:javascript
复制
app.io.route("test", function(req) {
  if(!req.session.IsAuthorized) {
    req.io.disconnect();
  }
});
EN

回答 1

Stack Overflow用户

发布于 2014-02-19 05:03:02

您可以传入对sessionstore的引用,以便在配置套接字服务器时可用:

代码语言:javascript
复制
var sessionStore = new express.session.MemoryStore();

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

我认为您应该能够通过将handshake.headers对象与您的会话存储中的内容进行匹配来从中获取其余的内容。请注意,默认存储保存在内存中,这对于生产目的来说并不是很好(但我想现在还不错)。以上内容与您的选项1方法有关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21859153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档