2012-04-27 90 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