Можете ли вы использовать пользовательский поставщик членства с помощью usernamepasswordvalidationmode?

StackOverflow https://stackoverflow.com/questions/3858903

Вопрос

Каждый пример, который я вижу, использует поставщик членства по умолчанию с помощью USERNAMEPASSWORDVALIDATIONMODE, но я могу указать членствоProvider для usernamePasswordValidationMode в сервоприводах для службы отдыха в WCF, если у меня есть поставщик членства на заказ? Следующий путь лучше всего взять, если это возможно:

  1. Создайте пользовательский поставщик членства, который реализует провайдер членства.

  2. Создайте CustomusernamePasswordValidator, который реализует usernamepasswordvalidator и переопределить метод проверки.

  3. В методе проверки подтвердить, существует ли пользователь в базе данных.

Вопросы у меня есть, если у меня есть метод входа в систему в моем сервисе, и он вызывается из веб-браузера с URL http://test.com/service.svc/login., Как я могу получить имя пользователя и пароль. Предположим, что именно имя пользователя и пароль можно напечатать на веб-страницу, или она может поступать из приложения Smart Device (Android, iPhone и etc)

Это было полезно?

Решение

Вы должны быть в состоянии: [HowtousenondefaultMembershipProvider] [1] на шаге 1 На странице есть две дополнительные ссылки, первое показывает, как построить класс провайдера членства, вторая показывает необходимые записи конфигурации. В то время как вторая ссылка говорит о том, что указывает поставщик по умолчанию, вы действительно можете указать любое количество поставщиков на конфиге, один из них просто будет иметь значение по умолчанию:

<system.web>
    <membership defaultProvider="SqlProvider">
        <providers>
            <clear />
            <add name="SqlProvider"
  type="System.Web.Security.SqlMembershipProvider"
  connectionStringName="MySqlConnection"
  applicationName="MyApplication"
  enablePasswordRetrieval="false"
  enablePasswordReset="true"
  requiresQuestionAndAnswer="true"
  requiresUniqueEmail="true"
  passwordFormat="Hashed" />
            <add name="MyProvider"
                     type="MyCompany.MyNamespace.MyMembershipProvider" />
        </providers>
    </membership>
</system.web>

Теперь в примерном коде из ссылки выше вы можете иметь строку в методе аутентификации IVICICE_AUTHENTICICATION так:

e.Authenticated = Membership.Providers["MyProvider"].ValidateUser(e.UserName, e.Password);

В вашем классе пользовательских провайдеров вы будете реализовать метод ValidateUser. Это может содержать любую логику, необходимую для проверки имени пользователя и пароля (которые передаются в метод).

[1]: http: // как Для: Использование провайдера членства на отсутствие по умолчанию для службы аутентификации WCF

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top