Использование и настройка SimpleMembership в проектах ASP.NET MVC 4

| Четверг, 21 февраля, 2013

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

С приходом ASP.NET MVC 4 в шаблонах создания проектов Visual Studio произошло много новых изменений. Одно их них – появление системы управления членством SimpleMembership, которая принесла с собой простой и расширяемый membership API и поддержку авторизации через протокол oAuth. Правда новая система управления учетными записями работающая через SimpleMembership не будет работать с предыдущими провайдерами ASP.NET Membership. Приведем некоторые основные факты новой системы:

  • SimpleMembership разработан, как замена предыдущей системе управления учетными записями и ролями ASP.NET.
  • SimpleMembership решает многие проблемы старой системы и поддерживает новые современные стандарты.
  • SimpleMembership интегрируется со старой системой MembershipProvider, но ее нельзя использовать вместе.
  • Новый шаблон интернет приложения ASP.NET MVC 4 в Visual Studio 2012 содержит контроллер управления учетными записями AccountController, который работает через SimpleMembership.
  • ASP.NET Web Forms не использует SimpleMembership. Авторизация oAuth реализована там поверх старого ASP.NET Membership.
  • Средство администрирования сайта ASP.NET Web Site Administration Tool не совместимо с SimpleMembership.

Компоненты SimpleMembership и SimpleRole - это не абстрактные классы, как старые MembershipProvider и RoleProvider, которые нужно было реализовывать самим разработчикам. Это база, на которой построен класс более высокого уровня WebSecurity, статические методы которого можно вызывать в веб-проекте повсеместно. Использовать новые компоненты можно даже если база с пользователями уже есть. Рассмотрим такой пример.

Создадим новое ASP.NET MVC 4 приложение в Visual Studio 2012. Нам нужно выбрать тип шаблона – Internet-приложение. В новом проекте все необходимые компоненты для управления учетными записями и ролями будут добавлены автоматически. Поддерживаемая авторизация oAuth даст возможность регистрироваться на сайте через учетные записи популярных социальных сетей: Facebook, Twitter, Windows Live и другие. Но это все для автоматически созданной локальной базы данных, которая указана в Web.Config.

<connectionStrings>
   <add name="DefaultConnection" 
        connectionString="Data Source=(LocalDb)\ ...  .mdf" 
        providerName="System.Data.SqlClient"></add>
</connectionStrings>

Нам нужно указать для SimpleMembership свою базу данных, таблицу пользователей в ней и поля в этой таблице, которые система будет использовать для получения и записи идентификаторов пользователя ID и UserName.

Допустим, у нас есть какая-то база данных. В ней уже есть таблица с пользователями.

Начальное состояние базы данных

Удаляем из файла web.config строку подключения к локальной базе по умолчанию и добавляем путь к своей.

<connectionStrings>
   <add name = "MyConnection" 
   connectionString="Data Source=VASILIY-PC3;Initial Catalog=TestDb;Integrated Security=True" 
   providerName="System.Data.SqlClient"></add>
</connectionStrings>

Находим в проекте файл Filters\InitializeSimpleMembershipAttribute.cs. В нем происходит инициализация источника данных для класса WebSecurity. Там есть строка:

WebSecurity.InitializeDatabaseConnection(
   "DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);

Параметры функции указывают на поля данных для базы по умолчанию, пишем туда свои значения для своей базы, таблицы и полей.

WebSecurity.InitializeDatabaseConnection(
   "MyConnection ", "Users", "Id", "UserName", autoCreateTables: true);

Последний параметр autoCreateTables: true нам очень пригодится для первого запуска приложения, так как все необходимые таблицы для работы WebSecurity будут созданы автоматически. Запускаем приложение, выполняем любое действие, которое заставило бы работать систему обработки учетных записей, допустим пытаемся авторизоваться. Как только класс WebSecurity будет задействован в первый раз, он сразу же проведет инициализацию предложенной базы данных и создаст в ней таблицы для своей работы.

Добавленные таблицы

Теперь WebSecurity будет работать с нашей базой. Запускаем приложение, регистрируемся, авторизуемся - все работает хорошо.

Для того, чтобы узнать, как включить регистрацию через oAuth провайдера смотрите статью "Реализация регистрации в проектах ASP.NET MVC 4 через oAuth провайдера"

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

Copyright © CodeHint.ru 2013-2019