2012-04-27 30 views
3

的只讀用戶只讀權限。因此,具有隻讀狀態的用戶無權添加新用戶或任何寫入功能。授權MongoDB中

我建立,其管理MongoDB中的數據的工具。當我以只讀用戶身份登錄時,它不應允許我添加新用戶。當我實現它時,它實際上並沒有添加用戶,但它沒有拋出任何異常。

這裏是我的添加只讀用戶

var credentials = new MongoCredentials(username, password,false); 
var addUser = new MongoUser(credentials, readOnly); 
var database = server.GetDatabase(databaseName); 
database.AddUser(addUser); 
+0

你能粘貼您用來創建只讀用戶的命令和命令用於創建新用戶 – 2012-04-27 10:12:37

+0

yaaa肯定.. VAR證書=新MongoCredentials(用戶名,密碼,假);var addUser = new MongoUser(credentials,readOnly); var database = server.GetDatabase(databaseName); database.AddUser(addUser); – 2012-04-27 11:03:11

+0

我必須明確地檢查只讀用戶。或者有什麼方法可以在mongo c中做到這一點# – 2012-04-27 11:38:28

回答

1

什麼時候開始的mongod與--auth命令行參數的命令?

你有沒有您的連接字符串中使用safe=true

此外,您需要使用管理員身份憑證將用戶添加到數據庫:

var adminCredentials = new MongoCredentials("adminuser", "adminpassword", true); 
var userCredentials = new MongoCredentials("username", "password"); 
var user = new MongoUser(userCredentials, true); 
var fooDatabase = server.GetDatabase("foo", adminCredentials); 
fooDatabase.AddUser(user); 

注意,有兩套憑證:用戶被添加,另一個用於設置管理員憑據您的代碼能夠添​​加用戶。

+0

謝謝。我也用過。在做同樣的事情,我得到了safemodeException。但我要問,只有指定安全= true在連接字符串時,才需要或者我必須使用SafeModeResult實例存儲操作 – 2012-04-30 04:32:43

+0

的結果,如果你想安全模式是你必須選擇明確。最簡單的方法是在連接字符串上使用safe = true。如果SafeMode未打開,則任何返回SafeModeResult的操作都將返回null。 – 2012-04-30 18:27:27