/// <summary> /// Adds a user to this database. /// </summary> /// <param name="user">The user.</param> public static void AddUserEx(MongoCollection col, User user) { var document = col.FindOneAs<BsonDocument>(Query.EQ("user", user.Username)); if (document == null) { document = new BsonDocument("user", user.Username); } document["roles"] = user.Roles; if (document.Contains("readOnly")) { document.Remove("readOnly"); } //必须要Hash一下Password document["pwd"] = MongoUser.HashPassword(user.Username, user.Password); //OtherRole 必须放在Admin.system.users里面 if (col.Database.Name == ConstMgr.DatabaseNameAdmin) { document["otherDBRoles"] = user.OtherDbRoles; } if (string.IsNullOrEmpty(user.Password)) { document["userSource"] = user.UserSource; } col.Save(document); }
/// <summary> /// AddUserToSystem /// </summary> /// <param name="newUserEx">用户信息</param> /// <param name="isAdmin">是否是Admin</param> public static void AddUserToSystem(User newUserEx, bool isAdmin) { //必须使用MongoCredentials来添加用户,不然的话,Password将使用明文登入到数据库中! //这样的话,在使用MongoCredentials登入的时候,会发生密码错误引发的认证失败 MongoCollection users; users = isAdmin ? RuntimeMongoDbContext.GetCurrentServer() .GetDatabase(ConstMgr.DatabaseNameAdmin) .GetCollection(ConstMgr.CollectionNameUser) : RuntimeMongoDbContext.GetCurrentDataBase().GetCollection(ConstMgr.CollectionNameUser); //以下代码 1.Ver2.4以前的有ReadOnly,FindUser需要寻找ReadOnly字段 // 2.这个其实不用检查,有的话修改,没有的话,新建 //if (users.Database.FindUser(newUserEx.Username) == null) //{ AddUserEx(users, newUserEx); //} }
/// <summary> /// </summary> /// <param name="db"></param> /// <param name="username"></param> public void AddUser(MongoDatabase db, string username) { var userInfo = db.GetCollection(ConstMgr.CollectionNameUser).FindOneAs<BsonDocument>(Query.EQ("user", username)); if (userInfo != null) { var user = new User(); user.Roles = userInfo["roles"].AsBsonArray; if (userInfo.Contains("otherDBRoles")) { user.OtherDbRoles = userInfo["otherDBRoles"].AsBsonDocument; } UserList.Add(db.Name, user); } }