ActiveDirectoryMembershipProvider.ValidateUser(String, String) 方法

定义

验证 Active Directory 数据存储区中是否存在指定的用户名和密码。

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

参数

username
String

要验证的用户的名称。

password
String

指定的用户的密码。

返回

如果指定的 usernamepassword 有效,则为 true;否则为 false。 如果 Active Directory 数据存储区中不存在指定的用户,ValidateUser(String, String) 方法则返回 false

例外

注解

此方法由 类调用, Membership 用于针对 Active Directory 数据存储验证用户凭据。

EnablePasswordReset如果 属性为 true 且提供的凭据有效,则会重置用户针对错误密码答案的跟踪计数器。

ValidateUser在以下情况下,当提供正确的凭据时,方法可能会返回 false

  1. 由于登录尝试失败次数过多,用户帐户被目录服务器锁定。 在目录的锁定持续时间过后,用户将无法登录。

  2. EnablePasswordReset如果 属性为 true,则如果用户提供错误的密码答案次数过多,则用户帐户将被锁定。 在 属性中指定的 PasswordAnswerAttemptLockoutDuration 时间过后,用户的帐户将解锁。

  3. 用户必须存在于连接字符串中指定的容器中。 为位于不同容器或不同域中的用户帐户提供有效的凭据。 用户必须存在于连接字符串中指定的容器中。

验证用户时,提供程序通过使用指定的用户名和密码(而不是应用程序配置文件中配置的凭据)连接到 Active Directory 数据存储来验证凭据。

但是,由于以下原因, ActiveDirectoryMembershipProvider 实例将使用配置的凭据连接到目录。

  • 确认用户存在于由 ActiveDirectoryMembershipProvider 实例的连接字符串确定的搜索范围内。 提供程序使用从连接字符串中指定的搜索点开始的子树搜索来确定用户是否存在。 用户必须存在于指定的容器中。 不会验证在连接字符串的指定容器之外有效的凭据。 有关连接字符串的详细信息, ActiveDirectoryMembershipProvider 请参阅类主题。

  • EnablePasswordReset如果 属性为 true,则ActiveDirectoryMembershipProvider实例将使用配置的凭据加载用户实例,以检查用户是否因为尝试更改密码答案失败过多而被锁定。

重要

连接到启用了“来宾”帐户的 Active Directory 域控制器是潜在的安全威胁。 在启用了“来宾”帐户的 Active Directory 域控制器上所做的所有验证尝试都将成功。 若要提高使用 Active Directory 域控制器时的安全性,应在域控制器上禁用“来宾”帐户。

满足以下条件之一时,实例 ActiveDirectoryMembershipProvider 将尝试对 Active Directory 进行并发绑定:

此外,若要进行并发绑定,必须满足以下条件:

  • 目录服务器必须在 Windows Server 2003 上运行。

  • 运行 ActiveDirectoryMembershipProvider 实例的 Web 服务器的操作系统必须支持并发绑定 (例如 Windows Server 2003) 。

使用并发绑定时,用户的上次登录日期不会在 目录中更新;因此, LastLoginDate 不能依赖 属性。

username 参数中剪裁前导空格和尾随空格。

适用于

另请参阅