2011-10-19 5 views
1

en jouant avec cela et ne peut pas obtenir une poignée
sur la façon de se connecter avec mot de passe. En MongoDb, c'est assez facile à comprendre, mais quand j'utilise la morphine, ce n'est pas
donc tout à fait évident parce que la documentation est minime ou je l'ai manquée.MongoDb et morphia mot de passe et nom d'utilisateur

J'ai déjà une Collection avec 5 documents.
Puis-je appliquer un utilisateur/passer sur celui-là?

Comment puis-je modifier ce code afin que la connexion utilise un nom d'utilisateur et un mot de passe?

A pris le code de ce poteau (Merci @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; 
     } 
    } 

Répondre

2
createDatastore(m, DB_NAME, username, password) 

This méthode surchargée a été introduit here. Peut-être que vous utilisez un client Moprhia plus ancien?

+0

Je ne sais pas c'est mon pot-morphia 1,00-SNAPSHOT.jar. Nice va essayer ce code. Mais je n'ai pas de passe/utilisateur sur la collection maintenant. Est-ce que Mongo l'insérera juste et alors la collection est toujours protégée par mot de passe? (pas de retour) – Erik

+1

Selon le document [this] (http://www.mongodb.org/display/DOCS/Security+and+Authentication), vous pouvez configurer la sécurité sur une base de données (pas de collection). –

+0

mm .. oui je voulais dire base de données bien sûr, il peut trouer de nombreuses collections ok l'a obtenu – Erik

8

vous pourriez peut-être utiliser le code suivant:

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