C# 用于验证用户的ActiveDirectoryMembershipProvider
我想使用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
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:更新了我的答案-我希望我有解决您问题的方法(除非您自己已经找到)。