#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), и имя пользователя / пароль игнорируется без предупреждения … в результате чего ваше приложение внезапно не проходит проверку подлинности без причины.