ActiveDirectoryMembershipProvider для проверки пользователя - PullRequest
1 голос
/ 17 января 2011

Я хотел бы использовать 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" />

Чтобы сделать то, что я хочу сделать, мне нужно предоставить провайдеру имя пользователя и пароль, чтобы он мог подключаться в первую очередь, то есть к системной учетной записи ... и после его установления я смогу проверить пользователя, которого я хочу проверить?

Спасибо,J

1 Ответ

10 голосов
/ 17 января 2011

В системе членства 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 будет просто использовать провайдера членства, который вы определили по умолчанию - но он не остановит вас от использования других!

...