public CreateUserStatus CreateUser(RegistrationData user, [Required(ErrorMessageResourceName = "ValidationErrorRequiredField", ErrorMessageResourceType = typeof(ValidationErrorResources))] [RegularExpression("^.*[^a-zA-Z0-9].*$", ErrorMessageResourceName = "ValidationErrorBadPasswordStrength", ErrorMessageResourceType = typeof(ValidationErrorResources))] [StringLength(50, MinimumLength = 7, ErrorMessageResourceName = "ValidationErrorBadPasswordLength", ErrorMessageResourceType = typeof(ValidationErrorResources))] string password) { if (user == null) { throw new ArgumentNullException("user"); } // Это нужно выполнить ДО создания пользователя, чтобы удостовериться, что нужные роли разрешены и доступна роль по умолчанию. // // Если возникнет проблема с диспетчером ролей, то лучше выдать ошибку сейчас, чем после создания пользователя. if (!Roles.RoleExists(UserRegistrationService.DefaultRole)) { Roles.CreateRole(UserRegistrationService.DefaultRole); } // ПРИМЕЧАНИЕ. ASP.NET по умолчанию для создания базы данных пользователей использует SQL Server Express. // Вызов метода CreateUser завершится ошибкой, если не установлен SQL Server Express. MembershipCreateStatus createStatus; Membership.CreateUser(user.UserName, password, user.Email, user.Question, user.Answer, true, null, out createStatus); if (createStatus != MembershipCreateStatus.Success) { return UserRegistrationService.ConvertStatus(createStatus); } // Назначить пользователя ролью по умолчанию. // Вызов завершится ошибкой, если отключено управление ролями. Roles.AddUserToRole(user.UserName, UserRegistrationService.DefaultRole); // Задает понятное имя (параметр профиля). // Вызов завершится ошибкой, если неверно настроен web.config. ProfileBase profile = ProfileBase.Create(user.UserName, true); profile.SetPropertyValue("FriendlyName", user.FriendlyName); profile.Save(); return CreateUserStatus.Success; }
/// <summary> /// Асинхронно вызывает метод "CreateUser" службы DomainService. /// </summary> /// <param name="user">Значение параметра "user" для данного действия.</param> /// <param name="password">Значение параметра "password" для данного действия.</param> /// <returns>Экземпляр операции, который может быть использован для управления асинхронным запросом.</returns> public InvokeOperation<CreateUserStatus> CreateUser(RegistrationData user, [RegularExpression("^.*[^a-zA-Z0-9].*$", ErrorMessageResourceName="ValidationErrorBadPasswordStrength", ErrorMessageResourceType=typeof(ValidationErrorResources))] [Required(ErrorMessageResourceName="ValidationErrorRequiredField", ErrorMessageResourceType=typeof(ValidationErrorResources))] [StringLength(50, ErrorMessageResourceName="ValidationErrorBadPasswordLength", ErrorMessageResourceType=typeof(ValidationErrorResources), MinimumLength=7)] string password) { Dictionary<string, object> parameters = new Dictionary<string, object>(); parameters.Add("user", user); parameters.Add("password", password); this.ValidateMethod("CreateUser", parameters); return ((InvokeOperation<CreateUserStatus>)(this.InvokeOperation("CreateUser", typeof(CreateUserStatus), parameters, true, null, null))); }