Разрешение Membership.ValidateUser для проверки имени пользователя или электронной почты из AD

1

У меня есть веб-приложение С#, в котором есть необходимость принять либо имя пользователя, либо адрес электронной почты для входа. В настоящее время он работает очень хорошо, чтобы войти с использованием адреса электронной почты, который также совпадает с полным доменным именем, где Membership.ValidateUser возвращает true в isValid если для пользователя и пароля переменных введен правильный адрес электронной почты и пароль.

bool isValid = Membership.ValidateUser(user, password);

Однако isValid возвращает false, если для пользователя используется только часть имени пользователя, а не полное имя пользователя (адрес электронной почты).

Например, мой пользователь может быть johngordon и мой адрес электронной почты johngordon @fullqualifieddomain. Мой пароль: 12345. Использование

Membership.ValidateUser("johngordon", "12345")

возвращает false

Membership.ValidateUser("domain\\johngordon", "12345")

возвращает false

Membership.ValidateUser("fullyqualifieddomain\\johngordon", "12345")

возвращает false

Membership.ValidateUser("johngordon@fullyqualifieddomain", "12345")

возвращает true

Вот что я думаю о соответствующей информации из web.config. Я сделал поиск в ValidateUser(), но не могу найти, как вы говорите ему, чтобы использовать имя пользователя, адрес электронной почты или в моем сценарии.

<membership defaultProvider="MyADMembershipProvider">
      <providers>
          <add name="MyADMembershipProvider"
               type="System.Web.Security.ActiveDirectoryMembershipProvider, 
               System.Web, Version=2.0.0.0, 
               &#xA; &#xA; Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
               connectionStringName="ADConnectionString" enableSearchMethods="true"
               connectionProtection="Secure" connectionUsername="domain\user" 
               connectionPassword="password" />
       </providers>
</membership>
  • 0
    Вам необходимо указать domain\username
  • 0
    @ErikFunkenbusch Я попытался домен \ имя пользователя в Membership.ValidateUser, и это также возвращает false.
Показать ещё 6 комментариев
Теги:
active-directory
web-config
asp.net-membership

1 ответ

1
Лучший ответ

Таким образом, я в конечном итоге делал разные вещи в зависимости от того, что я получил как имя пользователя, проверяющего полнофункциональное имя, адрес электронной почты или просто имя пользователя и, соответственно, их проверку.

bool isValid = false;
if(user.Contains("@fullyqualifieddomain"))
{
  isValid = Membership.ValidateUser(user, password)
}
else if(user.Contains("@"))
{
  isValid = Membership.ValidateUser(Membership.GetUserNameByEmail(user),password);
}
else
{
 isValid = Membership.ValidateUser(user+"fullyqualifieddomain");
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню