2013-09-07 16 views
7

Mam serwer Mongodb uruchomiony na localhost, bez uwierzytelniania (w celach testowych). W moim projekcie Java, dodałem do niego pole uwierzytelniania (tak, że użytkownik może zmodyfikować konfigurację, a jeśli jest w trybie zaufania, zostaw to pole puste). Problem polega na tym, że zostanie odrzucona, aw MongoDB, otrzymuję:Uwierzytelnianie Mondzieb z trybem zaufania kończy się niepowodzeniem w Javie

Sat wrz 07 15: 04: 17,018 [conn4] Pole brakuje/źle wpisać otrzymane authenticat e poleceń bazą danych TESTDB

Wiem, dlaczego tak się dzieje, ale nie mogę wymyślić sposobu, aby temu zapobiec. Powodem tego jest to, że db.authenticate() zwraca wartość false, jeśli autoryzacja się nie powiedzie LUB jeśli test uwierzytelniania zakończył się powodzeniem z różnymi poświadczeniami. W konsoli MongoDB, otrzymuję ten tuż przed błędem powyżej:

Sat Sep 07 15: 04: 17.010 [initandlisten] Przyłącze przyjmowane od 127.0.0.1:53602 # 4 (2 złącza teraz otwarty)

Jednym z połączeń byłaby moja powłoka, a druga to projekt. Oto mój kod Java:

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

Muszę zatrzymać go, aby zapobiec konsoli z coraz brzydkie. Nie rozumiem, dlaczego:

!db.isAuthenticated() 

Nie działa. To powinno powstrzymać go przed wyłączeniem. Jeśli ktokolwiek może pomóc, to byłoby wspaniale!

+0

Znalazłeś rozwiązanie to ?? – Jhanvi

Odpowiedz

0

miałem ten problem i naprawić go, zastępując je w moich właściwości aplikacyjnych:

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

Z:

spring.data.mongodb.uri=mongodb://localhost/test 
Powiązane problemy