我想使用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" />
要做我想做的事情,我是否需要向提供商提供用户名和密码,以便它可以首先连接,即系统帐户..一旦建立我可以检查我想要的用户验证
谢谢, Ĵ
答案 0 :(得分:10)
使用ASP.NET成员资格系统,重点是您不需要实例化提供程序类或任何东西 - 您定义的那个可立即在Membership
静态实例下可用。
因此,在您的情况下,只需确保配置正确,然后执行以下操作:
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
只会使用您已定义为默认的成员资格提供程序 - 但它不会阻止您使用其他人!