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

Другие вопросы по тегам