小编msm*_*nov的帖子

为什么connect-mongo会为每个请求创建新会话?

我有两个nodejs服务器(web-server,socket-server),它们通过socket.io相互连接.在Web服务上,我使用express.js和passport.js作为身份验证中间件.

这是我的网络服务器配置:

var express = require('express'),
    mongo = require('mongodb'),
    io = require('socket.io'),
    passport = require('passport'),
    LocalStrategy = require('passport-local').Strategy,
    MongoStore = require('connect-mongo')(express);

app.configure(function () {
    app.use(express.cookieParser());
    app.use(express.methodOverride());
    app.use(express.bodyParser());
    app.use(express.session({
        secret: 'keyboard cat',
        store: new MongoStore({
          db: 'MyDatabase'
        })
    }));
    app.use(passport.initialize());
    app.use(passport.session());
    app.use(app.router);
    app.use(express.static(__dirname + '/htdocs'));
});
Run Code Online (Sandbox Code Playgroud)

当我使用connect-mongo时,它会为每个http请求创建一个新会话.

此元素使用登录请求创建:

{
  "_id" : "UCnXade6Bk6ofOZ+jiEgzyH8",
  "session" : "{\"cookie\":{\"originalMaxAge\":31536000000,\"expires\":\"2014-03-07T13:07:45.703Z\",\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":\"50cae08806e31ea2e5634e3f\"}}",
  "expires" : new Date("7.3.2014 19:07:45")
}
Run Code Online (Sandbox Code Playgroud)

每当我按F5或接受套接字时,此元素就会创建.

{
  "_id" : "JhypbYFtj1CGOK/ylMhG8+Yk",
  "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{}}",
  "expires" : new Date("21.3.2013 19:03:38")
}
Run Code Online (Sandbox Code Playgroud)

当web-server采用套接字连接时,connect-mongo会创建新会话.每分钟大约有50个新文档.

可能是什么原因?

UPDATE

在更新页面的情况下,帮助提示添加app.use(express.favicon()). …

authentication mongodb node.js express passport.js

8
推荐指数
1
解决办法
2448
查看次数

标签 统计

authentication ×1

express ×1

mongodb ×1

node.js ×1

passport.js ×1