Можно ли использовать настраиваемого поставщика членства с userNamePasswordValidationMode?

В каждом примере, который я вижу, используется поставщик членства по умолчанию с userNamePasswordValidationMode, но могу ли я указать MembershipProvider для userNamePasswordValidationMode в ServiceCredentials для службы WCF REST, если у меня есть настраиваемый поставщик членства? Если это возможно, лучше всего выбрать следующий маршрут:

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

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

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

У меня возникают проблемы, если у меня есть метод входа в мою службу и он вызывается из веб-браузера с URL-адресом http://test.com/service.svc/login, как мне узнать имя пользователя и пароль. Предположим, что имя пользователя и пароль могут быть введены на веб-странице или могут быть получены из приложения для смарт-устройства (android, iphone и т. Д.).


person Xaisoft    schedule 04.10.2010    source источник


Ответы (1)


Вы должны уметь: [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>

Теперь в примере кода из приведенной выше ссылки у вас может быть строка в методе AuthenticationService_Authenticating, например:

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

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

[1]: http://How: использовать нестандартного поставщика членства для службы аутентификации WCF

person Steve Ellinger    schedule 06.10.2010
comment
Стив, я думаю, твоя ссылка испортилась. - person Xaisoft; 06.10.2010