shiftnotes

записки провинциального студента

Custom Membership Provider. Часть 1

В дипломном проекте на asp.net mvc, которым я сейчас занимаюсь возникла необходимость реализовать разделение пользователей по ролям. Но меня не устраивют стандартные membership и role провайдеры, так как они хранят все данные в отдельной БД.

После некоторого гугления, нашлась интересная статья в которой рассказывается,как сделать кастомный провайдер, с помощью которого можно хранить данные в той бд, в которой вы работаете. К сожалению, в этой статье описана реализация только membership, но я попытаюсь самостоятельно дописать role provider позже, а пока —  перевод этой статьи.

Для начала, создаем проект asp.net mvc 2 web application и дадим ему имя, скажем CustomRoleAndMembership.

Проект уже сконфигурирован на работу с базой ASPNETDB, расположенной в папке App_Data, и на стандартный membership provider. Но мы хотим хранить всю информацию в собственной базе данных и для этого нам потребуется реализовать свой собственный membership provider.

Создаем класс MyMembershipProvider в папке Models и перемещаем его в App_Data при помощи Add->Existing item…Add Existing item

Удалим неймспейс и сделаем наш класс наследуемым от MembershipProvider, который находится в System.Web.Security

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;

public class MyMembershipProvider: MembershipProvider
{
}

Затем нам нужно добавить все свойства и методы из стандартного провайдера при помощи Implement Abstract Class

Implement Abstract Class

После этого наш класс будет содержать методы из MembershipProvider которые нужно реализовать

using System;
using System.Collections.Generic;
using System.Linq;|
using System.Web;
using System.Web.Security;

public class MyMembershipProvider: MembershipProvider
{
      public override string ApplicationName
      {
          get
          {
               throw new NotImplementedException();
          }
          set
          {
               throw new NotImplementedException();
          }
     }
 ...
}

Пока оставим наш класс как есть и настроим web.config для работы с нашим провайдером.

<membership defaultProvider="CustomMembershipProvider">
 <providers>
 <clear/>
 <add name="CustomMembershipProvider" type="MyMembershipProvider"
      connectionStringName="ApplicationServices"
      enablePasswordRetrieval="false"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false"
      maxInvalidPasswordAttempts="5"
      minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0"
      passwordAttemptWindow="10"
      applicationName="/" />
 </providers>
</membership>

Если мы попробуем залогиниться в нашем приложении, оно выдаст исключение NotImplementException для метода ValidateUser. Позже мы создадим базу данных с таблицей пользователей, исправим наш код, чтобы можно было работать так-же как и со стандартным MembershipProvider’ом и добавим необходимые для нас функции.

Часть 2

Реклама

3 responses to “Custom Membership Provider. Часть 1

  1. shift Апрель 22, 2011 в 11:44

    Custom membership provider Часть 1. Создание провайдера членства в ASP.NET

  2. Evad Май 22, 2012 в 21:33

    а на asp.net 2.0 работать будет ?

  3. Dasha Larionova Август 27, 2014 в 19:18

    спасибо!!!! весь интернет перелопатила. ты молодец!

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

%d такие блоггеры, как: