ActiveDirectoryMembershipProvider.ChangePasswordQuestionAndAnswer 方法

定义

更新 Active Directory 存储中用户的密码问题和答案。

public:
 override bool ChangePasswordQuestionAndAnswer(System::String ^ username, System::String ^ password, System::String ^ newPasswordQuestion, System::String ^ newPasswordAnswer);
public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer);
override this.ChangePasswordQuestionAndAnswer : string * string * string * string -> bool
Public Overrides Function ChangePasswordQuestionAndAnswer (username As String, password As String, newPasswordQuestion As String, newPasswordAnswer As String) As Boolean

参数

username
String

要更改其密码问题和答案的用户。

password
String

指定用户的密码。

newPasswordQuestion
String

指定用户的新密码问题。

newPasswordAnswer
String

指定用户的新密码答案。

返回

true 如果更新成功,则为否则,为 false. 如果密码不正确、用户被锁定或 Active Directory 数据存储中不存在,也会返回值 false

例外

管理员尚未将密码问答字段映射到 Active Directory 架构的属性。

username 为空,或超过用户名的最大长度(通常为 256 个字符)。

-或-

username 包含逗号。

-或-

用户名映射到 userPrincipalName 属性,参数 username 包含反斜杠。

-或-

password 是长度为零的字符串。

-或-

password 超过最大密码长度(通常为 128 个字符)。

-或-

newPasswordQuestion 为空, RequiresQuestionAndAnswer 属性值为 true.

-或-

newPasswordQuestion 超过 256 个字符。

-或-

newPasswordAnswer 加密答案后超过 128 个字符。

usernamenull

-或-

passwordnull

-或-

newPasswordQuestion is nullRequiresQuestionAndAnswer 属性为 true.

-或-

newPasswordAnswer is nullRequiresQuestionAndAnswer 属性为 true.

machineKey 元素(ASP.NET 设置架构)配置元素指示自动生成的计算机加密密钥。 必须显式设置 machineKey 元素(ASP.NET 设置架构)元素的属性,才能使用 <a0/> 来存储密码答案。

注解

该类调用 ActiveDirectoryMembershipUser 该方法以更新 Active Directory 成员身份存储中用户的密码问题和答案。

重置用户密码时,需要密码问题和答案可提供额外的安全层。 创建用户名时,用户可以提供一个问题和答案,供以后用来重置忘记的密码。 该方法将 ChangePasswordQuestionAndAnswer 成员身份用户的密码问题和答案更新为新值。

若要使用 ChangePasswordQuestionAndAnswer 该方法,必须在应用程序的配置文件中设置这些附加属性:

  • requiresQuestionAndAnswer 必须为 true

  • attributeMapPasswordQuestion 并且 attributeMapPasswordAnswer 必须映射到 Active Directory 架构中的属性。

如果未满足上述条件,则会在初始化时引发 a ProviderException

ActiveDirectoryMembershipProvider 实例使用提供的 username 凭据连接到 Active Directory 数据存储,并使用 password 参数来验证用户名/密码组合。 使用提供程序的配置连接凭据执行问题和答案的实际更新。

如果向 ChangePasswordQuestionAndAnswer 方法提供不正确的密码,目录服务器将递增跟踪无效密码尝试的计数器。 这可能会导致用户被锁定且无法登录,直到调用 UnlockUser 该方法或目录中指定的锁定持续时间清除为止。

如果对问题和答案的更新成功,并且属性 EnablePasswordResettrue,则重置用户错误的密码答案跟踪计数器。

密码答案是在 Active Directory 数据存储中存储之前使用 EncryptPassword 该方法加密的。 加密密钥和算法由 machineKey 元素(ASP.NET 设置架构) 配置元素指定。 必须指定 machineKey 元素(ASP.NET 设置架构)元素 上的解密属性,该 ActiveDirectoryMembershipProvider 类不支持自动生成的加密密钥。

密码问题的最大长度为 256 个字符。 密码答案的最大长度为 128 个字符。

前导空格和尾随空格将从除所有参数值之外 password进行剪裁。

提供程序通过对从连接字符串中指定的搜索点开始的用户名执行子树搜索来查找要更新的用户实例。 ActiveDirectoryMembershipProvider有关连接字符串的详细信息,请参阅类主题。

适用于

另请参阅