2011-10-19 118 views
1

玩弄這個,並不能得到一個握手
關於如何連接密碼。MongoDb和嗎啡密碼和用戶名

在MongoDb中,它很容易理解,但是當我使用嗎啡時,它不是
所以很明顯,因爲文檔很少或我錯過了。

我已經有一個包含5個文件的集合。
我可以申請用戶/通行證嗎?

我該如何修改此代碼以便日誌記錄使用用戶名和密碼?

從此信息(感謝@Lennart Koopmann)
MongoDB Java driver tutorial

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; 
     } 
    } 

回答

2
createDatastore(m, DB_NAME, username, password) 

This重載的方法已被引入here接過代碼。

也許您正在使用較舊的Moprhia客戶端?

+0

不知道這是我的罐子嗎啡-1.00-SNAPSHOT.jar。 尼斯將嘗試該代碼。但是我現在沒有通過收藏集的用戶。 Mongo會插入它,然後集合始終受密碼保護? (不會回頭) – Erik

+1

根據[this](http://www.mongodb.org/display/DOCS/Security+and+Authentication)文檔,您目前可以基於數據庫(而不是集合)配置安全性。 –

+0

毫米..是的,我的意思是當然數據庫,它可以打開許多收藏品收穫它 – Erik

8

,也許你可以使用下面的代碼:

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");