1

我正在尝试使用 express 中间件进行会话(我不明白,但我觉得我很接近)。

我最终问的原因是快递文档(http://expressjs.com/api.html#middleware)将其称为 express.cookieSession ,而其他所有人(主要在这里)我已经看到讨论它一直在调用它express.session。我现在真的不确定,我只有一大堆可能有用的代码???但我看到的每个例子都是不同的......它是如何工作的?

var express = require('express')
  , http = require('http');
  , app = express();


store  = new express.session.MemoryStore;
app.use(express.cookieParser());
//app.use(express.cookieSession());
app.use(express.session({secret:'whateverman',key:'express.sid',store:store}));
app.use(app.router);

app.all('/*',function(req,res,next){res.header("Access-Control-Allow-Origin","*");res.header("Access-Control-Allow-Headers","X-Requested-With");next();});



var server = http.createServer(app);
server.listen(8000);
var io = require('socket.io').listen(server);



io.sockets.on('connection',function(socket){

    socket.on('reglogin',function(_){_.session.e='some@email.com';});

});

socket.on('reglogin' 产生:

TypeError:无法设置未定义的属性“e”

//-------------------------------问题更新

如果 express 依赖于 connect 但 express 可以访问连接中间件,就好像它是它自己的一样,例如:

app.use(express.cookieSession()); //app is express
app.use(connect.cookieSession()); //does exactly the same

那么同样的逻辑肯定会适用于依赖于 express 的 socket.io:

io.use(connect.CookieSession()); //io is socket.io

我在这里错了吗?Socket.io 有相同的 .use 方法吗?更新:(对 io.use 的回答是否定的)

io.interoperate(app.use(express.cookieSession())); 哈哈

- - - - - - - - - - - - - - 更新 - - - - - - - - - - - ------------ 我在绝望的尝试中遵循了以下 npm 模块指南,以使会话正常工作并在每次握手时都归档,没有 cookie:

express.io session.socket.io session.io + sessionstore

当前将后者与控制台日志一起使用:

warn - handshake error Could not find cookie with key: connect.sid
4

0 回答 0