PHP Velho Oeste 2024

Authentification

Si MongoDB est en fonctionnement avec l'option --auth ou l'option --keyFile, vous devez vous authentifier avant de faire n'importe quelle opération avec le driver. Vous pouvez vous authentifier via la connexion en spécifiant le nom d'utilisateur et le mot de passe soit dans l'URI de connexion, ou en utilisant les options "username" et "password" dans le constructeur MongoClient::__construct().

Exemple #1 Authentification sur la base de données "admin"

<?php
// Spécifie le nom d'utilisateur et le mot de passe dans l'URI de connexion (méthode préférée)
$m = new MongoClient("mongodb://${username}:${password}@localhost");

// Spécifie le nom d'utilisateur et le mot de passe via le tableau d'options (méthode alternative)
$m = new MongoClient("mongodb://localhost", array("username" => $username"password" => $password));
?>

Par défaut, le driver s'authentifiera sur la base de données admin. Vous pouvez vous authentifier sur une base de données différente en le spécifiant soit dans l'URI de connexion, soit via l'option "db" du constructeur MongoClient::__construct().

Exemple #2 Authentification sur une base de données normale

<?php
// Spécifie la base de données à utiliser dans l'URI de connexion (méthode préférée)
$m = new MongoClient("mongodb://${username}:${password}@localhost/myDatabase");

// Spécifie la base de données à utiliser via le tableau d'options (méthode alternative)
$m = new MongoClient("mongodb://${username}:${password}@localhost", array("db" => "myDatabase"));
?>

Si votre connexion est interrompue, le driver tentera automatiquement une re-connexion ou une ré-authentification.

add a note add a note

User Contributed Notes 2 notes

up
1
davida at quickplay dot com
9 years ago
How does this work for connections to replication sets?

Does the connection string become:
"mongodb://user:password@server1:27017,server2:27017,server3:27017"
up
0
dan at kayakaddict dot co dot uk
8 years ago
For connecting to a replica set with authentication it is possible to use a connection string like the following (substitute the port numbers, replica set name and DB with your own)

$m = new MongoClient("mongodb://${username}:${password}@localhost:27037,mongodb://${username}:${password}@localhost:27038",
array("replicaSet" => "test"_replica, "db" => "mytestdb"));

The second member string "mongodb://${username}:${password}@localhost:27038" does not need the username and password - however, if the connection to the first member fails I have not tested to see if the username and password persist to the second member.
To Top