【问题标题】:connect-mongodb access sessionsconnect-mongodb 访问会话
【发布时间】:2011-12-08 21:47:11
【问题描述】:

在我的 node.js 应用程序中,我使用 expressJS 和 connect-mongodb 作为会话存储。我已将 connect-mongodb 设置为指向我本地的本地 MongoDB(例如 mongoStore(mongodb://localhost/myAppDB')

我的所有用户身份验证都按预期工作,但我没有在我的 mongodb 中看到会话集合。例如,当我在终端中运行以下命令时:

$ mongo myAppDB
 > show collections

我看到了我所有的其他收藏,但没有会话。

我应该能够以这种方式看到它们吗?

我只是希望能够从 connect.sid 访问我的会话,但是由于 mongoStore 没有 'get' 方法,所以我试图直接从数据库中提取会话

【问题讨论】:

  • 您应该会看到一个sessions 集合。你确定你确实设置了会话存储吗?

标签: node.js connect express


【解决方案1】:

根据 connect-mongodb 文档 (https://github.com/masylum/connect-mongodb) 1.x 版本与 0.x 版本不兼容。在早期版本中,您可以传递 URL。现在您必须通过 mongodb 连接或服务器配置。

以下显示了我在我的应用程序中的情况(基本上复制了 connect-mongodb 文档中的示例):

var express = require('express');
var Db = require('mongodb').Db;
var Server = require('mongodb').Server;
var server_config = new Server('localhost', 27017, {auto_reconnect: true, native_parser: true});
var mongoDatabase;

mongoDatabase = new Db(app.set('db-name'), server_config, {});

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.cookieParser()); 
  app.use(express.session({
    store: new mongoStore({ db: mongoDatabase }),
    secret: 'topsecret'
  }));
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2017-03-30
    • 2013-11-25
    • 2015-07-21
    • 2023-03-25
    相关资源
    最近更新 更多