Пароль и имя пользователя MongoDB и morphia

#mongodb #morphia

#mongodb #morphia

Вопрос:

играю с этим и не могу понять
, как подключиться с помощью пароля.

В MongoDB это довольно легко понять, но когда я использую morphia, это не
так очевидно, потому что документация минимальна или я ее пропустил.

У меня уже есть коллекция из 5 документов.
Могу ли я применить пользователя / передачу к этому?

Как я могу изменить этот код, чтобы для ведения журнала использовались имя пользователя и пароль?

Взял код из этого поста (спасибо @Lennart Koopmann)
Руководство по драйверу Java MongoDB

 public final class MongoConnectionManager {

 private static final MongoConnectionManager
 INSTANCE = new MongoConnectionManager();
 private final Datastore db;
 public static final String DB_NAME = "mongo_database";

 private MongoConnectionManager() {
            try {
                Mongo m = new Mongo("localhost", 27017);
            db = new Morphia().map(UserData.class)
     .map(Statistic.class)
     .map(FriendList.class)
     .map(ServerData.class)
     .map(BatchData.class).createDatastore(m, DB_NAME);

                db.ensureIndexes();
            }
            catch (Exception e) {
                throw new RuntimeException("Error initializing mongo db", e);
            }
        }

        public static MongoConnectionManager instance() {
            return INSTANCE;
        }

        public Datastore getDb() {

            return db;
        }   
    }
  

Ответ №1:

возможно, вы могли бы использовать следующий код:

 Morphia morphia = new Morphia();
ServerAddress addr = new ServerAddress("host", 27017);
List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
MongoCredential credentia = MongoCredential.createCredential(
    "username", "dbname", "password".toCharArray());
credentialsList.add(credentia);
MongoClient client = new MongoClient(addr, credentialsList);
datastore = morphia.createDatastore(client, "dbname");
  

Ответ №2:

 createDatastore(m, DB_NAME, username, password)
  

Этот перегруженный метод был представлен здесь.

Может быть, вы используете более старый клиент Moprhia?

Комментарии:

1. Не уверен, что это моя банка morphia-1.00-SNAPSHOT.jar . Nice попробует этот код. Но сейчас у меня нет пропуска / пользователя в коллекции. Будет ли Mongo просто вставлять его, и тогда коллекция всегда будет защищена паролем? (пути назад нет)

2. В соответствии с этим документом в настоящее время вы можете настроить безопасность на основе базы данных (не коллекции).

3. мм .. да, я имел в виду базу данных, конечно, она может пробить много коллекций, понял

4. К вашему сведению, теперь это устарело (по состоянию на 2014-02), и имя пользователя / пароль игнорируется без предупреждения … в результате чего ваше приложение внезапно не проходит проверку подлинности без причины.