2014-02-26 71 views
1

我看到了很多的教程展示瞭如何在MongoDB中使用Java的Java/MongoDB的認證

權威性的,我有我的MongoDB與身份驗證設置啓用。 在控制檯我用

使用管理

db.auth( 「MYUSER」, 「新密碼」),並運行良好。

,並在Java在每一個訪問的網站的代碼是

Mongo mongo = new Mongo("localhost", 27017); 
DB db = mongo.getDB("myBase"); 

boolean auth = db.authenticate("myUser", "newPassword".toCharArray()); 
    //auth is true if everithing went well 

的大問題是,代碼不爲我工作,我不知道爲什麼。我測試顯式更改爲管理數據庫。

Mongo mongo = new Mongo("localhost", 27017); 
DB db = mongo.getDB("admin"); 

boolean auth = db.authenticate("myUser", "newPassword".toCharArray()); 
DB db = mongo.getDB("myBase"); 
    //auth is true if everithing went well 

這工作,但對我來說這不是一個解決方案,因爲我triying使用蒙戈與騾子,問題是,我不能分貝的之間改變每個權威性,我必須做的。

爲什麼第一個代碼適用於所有人而不是我?

我意識到了什麼問題。

似乎mongo使用用戶存儲在數據庫本身的每個數據庫。我在同一個數據庫中創建了用戶,它工作。這是一個非常奇怪的功能,因爲我會在mongo中有很多重複的用戶,每個用戶都有一個用戶。減去用於在Mongo中管理的用戶...

回答

1

我意識到了什麼是問題。

似乎mongo使用用戶存儲在數據庫本身的每個數據庫。我在同一個數據庫中創建了用戶,它工作。這是一個非常奇怪的功能,因爲我會在mongo中有很多重複的用戶,每個用戶都有一個用戶。減去一個用戶在蒙戈管理...

+0

我要提到的可能性,所以我很高興你找到它。 2.6正在重新授權,所以看看即將發生的變化可能不會有什麼影響。 – evanchooly

0

現在不推薦使用該方法。新的,首選的方式是我們MongoClient(List<ServerAddress> seeds, List<MongoCredential> credentialsList)創建一個客戶端,將驗證服務器的所有連接

+0

我不認爲這是問題,因爲我使用的騾子並在內部它使用db.authenticate(用戶名,password.toCharArray()) 檢查 https://github.com/mulesoft/mongo-connector/blob/master/src/main/java/org/mule/module/mongo/MongoCloudConnector.java line 1257 – user1655510

+0

也許可能是一個mongo配置問題? – user1655510

+0

很難說沒有任何錯誤/日誌 – evanchooly