是否可以根据请求对MongoDB进行身份验证?

时间:2012-05-10 05:01:00

标签: ruby-on-rails ruby ruby-on-rails-3 mongodb

我有一个需要将一些数据写入MongoDB的Rails控制器。这就是目前的样子。

  def index
    data = self.getCheckinData

    dbCollection = self.getCheckinsCollection
    dbCollection.insert(data)

    render(:json => data[:_id].to_s())
  end

protected   

  def getCheckinsCollection
    connection = Mongo::Connection.new('192.168.1.2', 27017)
    db = connection['local']
    db.authenticate('arman', 'arman')
    return db['checkins']
  end

可以根据请求对MongoDB进行身份验证吗?

3 个答案:

答案 0 :(得分:2)

它可能不必要地昂贵并且创建了比需要更多的连接。

看一下文档:

http://www.mongodb.org/display/DOCS/Rails+3+-+Getting+Started

它们连接在初始化器内部。它会进行一些连接池,以便重新使用连接。

答案 1 :(得分:1)

数据库中只有一个用户吗?

我会说:不要进行数据库身份验证。如果MongoDB服务器位于良好的防火墙后面,那就非常安全了。它永远不应该暴露在互联网上(除非你知道你在做什么)。

此外,不要为每个请求建立新连接。这很贵。在启动时初始化一个并重新使用它。

答案 2 :(得分:1)

一般来说,应该避免这种情况。

如果您对每个请求进行身份验证并且同时收到许多请求,则可能会出现与数据库的所有连接都出现问题的问题。此外,创建和销毁数据库连接可能会耗尽数据库服务器中的资源 - 它会为服务器添加一个您可以轻松避免的负载。

最后,这种编程方法可能会在未发布数据库连接时导致问题 - 最终您的数据库服务器可能会耗尽连接。