ActiveDirectoryMembershipProvider для проверки пользователя
Я хотел бы использовать ValidateUser
метод ActiveDirectoryMembershipProvider для проверки того, что пользователь существует в 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" />
Чтобы сделать то, что я хочу, нужно ли предоставить имя пользователя и пароль провайдеру, чтобы он мог подключаться в первую очередь, то есть к системной учетной записи... и как только он будет установлен, я смогу проверить пользователя, которого я хочу проверить?
Спасибо дж
1 ответ
С системой членства 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
будет просто использовать провайдера членства, который вы определили в качестве пользователя по умолчанию, но это не помешает вам использовать других!