2013-09-07 11 views
7

Ho un server Mongodb in esecuzione su localhost, senza autenticazione (scopi di test). Nel mio progetto Java, ho aggiunto un campo di autenticazione (in modo che l'utente possa modificare una configurazione e, se si trova in modalità di attendibilità, lasciare semplicemente vuoto). Il problema è, esso viene rifiutato, e in MongoDB, ottengo:L'autenticazione Mongodb con modalità di sicurezza non riesce in Java

sabato da settembre 07 15: 04: 17,018 [conn4] campo mancante/tipo sbagliato nel ricevuto authenticat e comando testdb

So perché questo sta accadendo, ma non riesco a pensare a un modo per impedirlo. La ragione per cui sta accadendo è perché db.authenticate() restituisce false se l'autorizzazione fallisce OPPURE se il test di autenticazione ha già avuto successo con credenziali diverse. Nella console MongoDB, ottengo questo a destra prima l'errore precedente:

sabato da settembre 07 15: 04: 17.010 [initandlisten] connessione accettato dal 127.0.0.1:53602 # 4 (2 connessioni aperte)

Una delle connessioni sarebbe la mia shell e l'altra è il progetto. Ecco il mio codice Java:

boolean auth = 
db.authenticate(getConfig().getString("Database.username", ""), 
getConfig().getString("Database.password", "").toCharArray()); 
     if (!db.isAuthenticated() && auth == false) { 
       // Stop the application 
     } 

devo fermarlo per evitare che la console di ottenere brutto. Non capisco il motivo per cui:

!db.isAuthenticated() 

non funziona. Questo dovrebbe averlo impedito di disabilitare. Se qualcuno può aiutare, sarebbe fantastico!

+0

Hai trovato una soluzione a questo ?? – Jhanvi

risposta

0

Ho avuto questo problema ed ha riparato sostituendo questi nel mio proprietà di applicazione:

spring.data.mongodb.database=test 
spring.data.mongodb.host=localhost 
spring.data.mongodb.password= 
spring.data.mongodb.port=27017 
spring.data.mongodb.username= 

Con:

spring.data.mongodb.uri=mongodb://localhost/test 
Problemi correlati