ActiveDirectoryMembershipProvider.CreateUser 方法

定义

将新用户添加到 Active Directory 数据存储区。

public:
 override System::Web::Security::MembershipUser ^ CreateUser(System::String ^ username, System::String ^ password, System::String ^ email, System::String ^ passwordQuestion, System::String ^ passwordAnswer, bool isApproved, System::Object ^ providerUserKey, [Runtime::InteropServices::Out] System::Web::Security::MembershipCreateStatus % status);
public override System.Web.Security.MembershipUser CreateUser (string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out System.Web.Security.MembershipCreateStatus status);
override this.CreateUser : string * string * string * string * string * bool * obj * MembershipCreateStatus -> System.Web.Security.MembershipUser
Public Overrides Function CreateUser (username As String, password As String, email As String, passwordQuestion As String, passwordAnswer As String, isApproved As Boolean, providerUserKey As Object, ByRef status As MembershipCreateStatus) As MembershipUser

参数

username
String

新用户的用户名。

password
String

新用户的密码。

email
String

新用户的电子邮件地址。

passwordQuestion
String

新用户的密码提示问题。

passwordAnswer
String

新用户的密码提示问题答案。

isApproved
Boolean

是否允许验证新用户。

providerUserKey
Object

用户的成员资格数据源中的唯一标识符。 使用 ActiveDirectoryMembershipProvider 类时,此参数必须为 null

status
MembershipCreateStatus

此方法返回时,包含一个 MembershipCreateStatus 枚举值,指示是否成功创建了用户。

返回

一个 ActiveDirectoryMembershipUser 实例,包含新创建用户的信息;如果未成功创建用户,则为 null

例外

providerUserKey 参数不是 null

管理员尚未将密码提示问题和答案字段映射到 Active Directory 架构的特性,并且 passwordQuestionpasswordAnswer 参数不是 null

machineKey 元素(ASP.NET 设置框架)配置元素指示自动生成的计算机加密密钥。 必须将 machineKey 元素(ASP.NET 设置框架)元素的 decryptionKey 属性显式设置为使用 ActiveDirectoryMembershipProvider 存储密码提示问题答案。

- 或 -

尝试设置新用户的密码时,ActiveDirectoryMembershipProvider 无法建立到目录的安全连接。

尝试创建用户时出现错误。

注解

CreateUser 调用 Membership 方法,以在 Active Directory 数据存储中创建新用户。

对于 active Directory 和 Active Directory 应用程序模式 (ADAM) 服务器, ActiveDirectoryMembershipProvider 类要求目录中的实例类为 user。 不支持替代用户类,例如 inetOrgPerson

使用 Active Directory 服务器并将用户名映射到 userPrincipalName 属性时, ActiveDirectoryMembershipProvider 类将代表你自动生成参数的随机 20 个字符的用户名 sAMAccountName

参数默认为以下最大长度。

参数 最大长度
username 如果使用 属性, userPrincipalName 则为 64 个字符。 如果使用 sAMAccountName 属性,则常见限制为 20 个字符或更少。
password 128 个字符。
email 256 个字符。
passwordQuestion 256 个字符。
passwordAnswer 加密前后 128 个字符。

Comment返回ActiveDirectoryMembershipUser的实例上的 属性限制为 1024 个字符。

如果通过减少这些属性允许的最大长度修改了目录架构,则优先使用这些长度。

在创建用户之前, ActiveDirectoryMembershipProvider 类将确保用户名是唯一的。 如果实例 ActiveDirectoryMembershipProvider 配置为需要唯一的电子邮件地址,它还将确保电子邮件地址是唯一的。

在 Active Directory 中,用户名映射到 userPrincipalName时,通过执行 GC 搜索来强制实施用户名唯一性。 如果使用 sAMAccountName ,则目录将自动在整个 Active Directory 域中强制实施 的唯一性 sAMAccountName

ADAM 服务器会自动在所有应用程序分区中强制实施 的 userPrincipalName 用户名唯一性。

通过从创建用户的容器的根目录开始,对重复的电子邮件地址执行子树搜索来强制实施电子邮件地址的唯一性。 这是默认的用户容器 ((如果连接到 Active Directory 且未在连接字符串) 中指定容器)或连接字符串中指定的容器。

ActiveDirectoryMembershipProvider 直接在连接字符串中指定的用户容器中创建用户。 有关连接字符串的详细信息, ActiveDirectoryMembershipProvider 请参阅类主题。

若要在 Active Directory 服务器上设置密码, connectionProtection 属性必须设置为 SignAndSeal

使用 ADAM 服务器时, connectionProtection 属性可以设置为 None,但前提是显式配置 ADAM 服务器以允许通过不安全的连接更改密码。

从除 之外 password的所有字符串参数值中剪裁前导空格和尾随空格。

重要

除非用于连接到 Active Directory 服务器的凭据具有域管理员权限 (不建议) 或“创建子实例”、“删除子实例”和“设置密码”访问权限,否则无法创建新用户。 需要“删除子实例”访问权限,因为创建用户是一个多步骤过程,如果创建用户的任何步骤失败,类 ActiveDirectoryMembershipProvider 将删除用户实例,而不是将部分构造的用户实例保留在目录中。

适用于

另请参阅