不能使用基于mongo的会话存储

时间:2012-05-09 02:07:59

标签: node.js mongodb express mongohq

我在ym app中有一个mongoose和connect-mongo模块实例。我使用connect-mongo模块将会话存储保存在mongodb数据库(mongohq)而不是内存存储中。

每次我尝试在服务器启动时访问我的应用程序(facebook auth with everyauth)我得到以下内容:

  

500 MongoError:错误:未经授权的db:express-sessions锁类型:-1   客户端:199.192.242.4

我的用户名,密码都不错。

var conf = {
  db: {
    db: 'express-sessions',
    host: 'staff.mongohq.com',
    port: 10072,  // optional, default: 27017
    username: 'admin', // optional
    password: 'admin', // optional
    collection: 'facebookSessions' // optional, default: sessions
  },
  secret: '076ee61d63aa10a125ea872411e433b9'
};

app.use(express.session({
    secret: conf.secret,
    maxAge: new Date(Date.now() + 3600000),
    store: new MongoStore(conf.db)
  }));

编辑,这似乎与我的mongohq有关。我修改了旧版本的集合,它可以工作。

2 个答案:

答案 0 :(得分:3)

我使用Heroku和Mongolab时遇到了类似的错误。

我通过使用mongolab web admin手动创建一个新的数据库用户来解决它。

答案 1 :(得分:0)

听起来db是以-auth启动的,但用户尚未被授予访问db的权限。

http://www.mongodb.org/display/DOCS/Security+and+Authentication