Можете ли вы использовать пользовательский поставщик членства с помощью usernamepasswordvalidationmode?
-
27-09-2019 - |
Вопрос
Каждый пример, который я вижу, использует поставщик членства по умолчанию с помощью USERNAMEPASSWORDVALIDATIONMODE, но я могу указать членствоProvider для usernamePasswordValidationMode в сервоприводах для службы отдыха в WCF, если у меня есть поставщик членства на заказ? Следующий путь лучше всего взять, если это возможно:
Создайте пользовательский поставщик членства, который реализует провайдер членства.
Создайте CustomusernamePasswordValidator, который реализует usernamepasswordvalidator и переопределить метод проверки.
В методе проверки подтвердить, существует ли пользователь в базе данных.
Вопросы у меня есть, если у меня есть метод входа в систему в моем сервисе, и он вызывается из веб-браузера с 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