mongodb的CRUD操作认证

时间:2018-03-12 05:54:24

标签: mongodb zend-framework3

我正在使用zend 3框架和mongodb。使用mongodb/mongodb库连接到mongodb数据库。

如何在zend和mongodb中添加验证,以便只有经过身份验证的用户才能使用zend rest apis在mongodb中执行CRUD操作?

从mongo shell我已经使用以下查询向db添加了身份验证,工作正常。

use admin;
db.createUser(
  {
    user: "admin",
    pwd: "password",
    roles: [ { role: "root", db: "admin" } ]
  }
);
mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"

use test;
db.createUser(
   {
     user: "testUser",
     pwd: "password",
     roles: [ "readWrite", "dbAdmin" ]
   }
);

db.auth("testUser", "password");

现在在Zend模型中,我正在使用以下代码,无需数据库身份验证即可正常工作。

$mongoClient = new \MongoDB\Client();
$collection = $mongoClient->selectDatabase($dbName)->selectCollection($collectionName);
$cursor = $collection->findOne(['_id' => $_id]);

现在,在执行上述查询之前,如何将用户凭据传递给\MongoDB\Client()以验证用户身份?

1 个答案:

答案 0 :(得分:1)

您可以使用凭据初始化客户端,如下所示:

$mongoClient = new \MongoDB\Client('mongodb://username:password@host1:port');