Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于验证用户的ActiveDirectoryMembershipProvider_C#_Active Directory_Ldap_Activedirectorymembership - Fatal编程技术网

C# 用于验证用户的ActiveDirectoryMembershipProvider

C# 用于验证用户的ActiveDirectoryMembershipProvider,c#,active-directory,ldap,activedirectorymembership,C#,Active Directory,Ldap,Activedirectorymembership,我想使用ActiveDirectoryMembershipProvider的ValidateUser方法来验证AD中是否存在用户 我正在表单中输入用户名和密码。然后我想实例化提供者并调用ValidateUser <add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider" connectionString

我想使用ActiveDirectoryMembershipProvider的
ValidateUser
方法来验证AD中是否存在用户

我正在表单中输入用户名和密码。然后我想实例化提供者并调用
ValidateUser

<add name="AspNetActiveDirectoryMembershipProvider" 
     type="System.Web.Security.ActiveDirectoryMembershipProvider" 
     connectionStringName="ADConnection" 
     attributeMapUsername = "userPrincipalName"  />

我只是用测试来代替真实值

<add name="ADConnection" connectionString="LDAP://test.test.test.com/dc=test,dc=com" />

要执行我想执行的操作,我是否需要向提供商提供用户名和密码,以便其能够首先连接,即系统帐户。。一旦建立,我就可以检查我想要验证的用户了

谢谢,
J

使用ASP.NET成员资格系统,关键是您不需要实例化提供者类或任何东西-您定义的提供者类可以立即在
成员资格
静态实例下使用

因此,在您的情况下,只需确保配置正确,然后执行以下操作:

 if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
     FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
 else
     Msg.Text = "Login failed. Please check your user name and password and try again.";
Membership
将是您定义的必要类-只需对其调用静态方法,就可以使用它了!:-)

更新:似乎您应该能够按照以下内容轻松实例化多个成员资格提供程序:

    if (e.UserName.IndexOf("@contoso.com") >= 0)
    {
        e.Authenticated = Membership.Providers["ContosoSqlProvider"].ValidateUser(e.UserName, e.Password);
    }
    else if (e.UserName.IndexOf("@fabrikam.com") >= 0)
    {
        e.Authenticated = Membership.Providers["FabrikamSqlProvider"].ValidateUser(e.UserName, e.Password);
    }
    else
    {
        e.Authenticated = Membership.Provider.ValidateUser(e.UserName, e.Password);
    }
因此,基本上,您可以通过
membership.Providers[“FabrikamSqlProvider”]
访问特定的成员资格提供程序,然后调用其上的方法,如
.ValidateUser()


基本的
Membership.ValidateUser
将只使用您定义为默认的成员资格提供程序,但它不会阻止您使用其他成员

使用ASP.NET成员资格系统,关键是您不需要实例化提供者类或任何东西-您定义的提供者类可以立即在
成员资格
静态实例下使用

因此,在您的情况下,只需确保配置正确,然后执行以下操作:

 if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text))
     FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);
 else
     Msg.Text = "Login failed. Please check your user name and password and try again.";
Membership
将是您定义的必要类-只需对其调用静态方法,就可以使用它了!:-)

更新:似乎您应该能够按照以下内容轻松实例化多个成员资格提供程序:

    if (e.UserName.IndexOf("@contoso.com") >= 0)
    {
        e.Authenticated = Membership.Providers["ContosoSqlProvider"].ValidateUser(e.UserName, e.Password);
    }
    else if (e.UserName.IndexOf("@fabrikam.com") >= 0)
    {
        e.Authenticated = Membership.Providers["FabrikamSqlProvider"].ValidateUser(e.UserName, e.Password);
    }
    else
    {
        e.Authenticated = Membership.Provider.ValidateUser(e.UserName, e.Password);
    }
因此,基本上,您可以通过
membership.Providers[“FabrikamSqlProvider”]
访问特定的成员资格提供程序,然后调用其上的方法,如
.ValidateUser()


基本的
Membership.ValidateUser
将只使用您定义为默认的成员资格提供程序,但它不会阻止您使用其他成员

谢谢,但它不是我想使用的唯一提供程序,我还想使用SqlMembershipProvider根据sql存储验证其他用户,因此我确实需要实例化它,默认情况下它可以选择sql存储。@John:更新了我的答案-我希望我有解决您问题的方法(除非您自己已经找到)。谢谢,但它不是我想使用的唯一提供程序,我想使用SqlMembershipProvider也可以根据sql存储验证其他用户,因此我确实需要实例化它,默认情况下它可以选择sql存储。@John:更新了我的答案-我希望我有解决您问题的方法(除非您自己已经找到)。