ExtendedMembershipProvider: Подключение собственной реализации системы управления учетными записями в проектах ASP.NET MVC 4

| Понедельник, 15 апреля, 2013

Метки: ASP.NET MVC, SimpleMembership Комментарии: 0

В предыдущих статьях было частично рассказано, как использовать встроенную реализацию системы управления учетными записями SimpleMembershipProvider. Но, что если по каким-то причинам она не устраивает разработчика, допустим, нужны другие таблицы, которые автоматически создает SimpleMembership, нужно по-другому реализовать и осуществить доступ к другому источнику данных, с которым не работает встроенная система SimpleMembership.

Для начала, рассмотрим иерархию классов, от которых наследуется класс SimpleMembershipProvider. Открываем документацию и видим:

На данный момент нас интересует абстрактный класс ExtendedMembershipProvider, от которого унаследована реализация SimpleMembershipProvider. Этот класс является расширением системы членства, предоставленный классом MembershipProvider.

Итак, нам не нужен SimpleMembershipProvider и далее рассмотрим внедрение в проект собственной реализации, унаследованной от класса ExtendedMembershipProvider.

В Visual Studio 2012 cоздадим новый проект ASP.NET MVC 4, выберем шаблон Internet Application.

Создан работающий проект, в котором есть регистрация и авторизация пользователей, но все это работает через SimpleMembershipProvider.

Далее добавим в проект новый класс CustomMembershipProvider:

И унаследуем его от ExtendedMembershipProvider, реализацию класса на данный момент можем сделать какой угодно, оставим пока исключения.

Следующий шаг, который нужно сделать - это подключить только что созданный класс. Для этого нужно сделать два изменения в файле web.config. Отключаем SimpleMembership:

<appSettings>
    <add key="enableSimpleMembership" value="false"/>
	…
</appSettings>

И подключаем наш класс CustomMembershipProvider:

<system.web>
    <membership defaultProvider="CustomMembershipProvider">
      <providers>
        <clear />
        <add name="CustomMembershipProvider"
                type="TestMvcApplication.Code.CustomMembershipProvider" />
      </providers>
    </membership>    
	…
</system.web>

Запускаем проект, и пытаемся зайти на страницу ввода логина и пароля или на страницу регистрации, чтобы задействовать работу системы управления членством. Получаем ошибку "The Role Manager feature has not been enabled." Так как мы отключили SimpleMembership от проекта, то управление ролями тоже отключено и нам нужно создать собственную реализацию и подключить ее к проекту также, как и CustomMembershipProvider. Добавим в проект класс CustomRoleProvider и наследуем его от RoleProvider:

И подключаем его в файле web.config:

<system.web>
…
    <roleManager enabled="true" defaultProvider="CustomRoleProvider">
      <providers>
        <add name="CustomRoleProvider"
               type="TestMvcApplication.Code.CustomRoleProvider" />
      </providers>
    </roleManager>
…
</system.web>

Запускаем проект, заходим на страницу ввода логина и пароля. Вводим произвольные данные, нажимаем кнопку "Log in". И так как мы еще не реализовали ни одного метода CustomMembershipProvider, то получим ошибку из этого класса "The method or operation is not implemented". Это значит, что новые классы включились в работу и теперь нужно их реализовать на свое усмотрение.

Комментарии
Никто еще не оставил здесь комментарий.
Войдите, чтобы написать комментарий , или воспользуйтесь формой ниже.
 

Copyright © CodeHint.ru 2013-2019