Я изучаю Vertx MongoClient API. Ранее я установил Restheart из Docker и его собственную копию mongodb, поэтому теперь у меня есть конфигурация по умолчанию для Restheart и конфигурация Mongo по умолчанию в docker-compose.yml:
MONGO_INITDB_ROOT_USERNAME: restheart
MONGO_INITDB_ROOT_PASSWORD: R3ste4rt!
Я положил Vertx Mongoclient в Вертикалю:
открытый класс MongoClientVerticle расширяет AbstractVerticle {
MongoClient mongoClient;
String db = "monica";
String collection = "sessions";
String uri = "mongodb://localhost:27017";
String username = "admin";
String password = "password";
MongoAuth authProvider;
@Override
public void start() throws Exception {
JsonObject config = Vertx.currentContext().config();
JsonObject mongoconfig = new JsonObject()
.put("connection_string", uri)
.put("db_name", db);
mongoClient = MongoClient.createShared(vertx, mongoconfig);
JsonObject authProperties = new JsonObject();
authProvider = MongoAuth.create(mongoClient, authProperties);
// authProvider.setHashAlgorithm(HashAlgorithm.SHA512);
JsonObject authInfo = new JsonObject()
.put("username", username)
.put("password", password);
authProvider.authenticate(authInfo, res -> {
if (res.succeeded()) {
User user = res.result();
System.out.println("User " + user.principal() + " is now authenticated");
} else {
res.cause().printStackTrace();
}
});
}
и я построил простой запрос:
public void find(int limit) {
JsonObject query = new JsonObject();
FindOptions options = new FindOptions();
options.setLimit(1000);
mongoClient.findWithOptions(collection, query, options, res -> {
if (res.succeeded()) {
List<JsonObject> result = res.result();
result.forEach(System.out::println);
} else {
res.cause().printStackTrace();
}
});
}
но когда я получаю доступ к БД, я получаю эту ошибку:
MongoQueryException: не удалось выполнить запрос с кодом ошибки 13 и сообщением об ошибке «Нет аутентифицированных пользователей» на локальном сервере: 27017
Что мне не хватает в процессе аутентификации?
Я использую последний рестарт + mongodb и vertx 3.5.3