Администрирование пользователей и ролей ASP.net MVC 4 (свойство "Membership.Provider" должно быть экземпляром "ExtendedMembershipProvider".)

Я пробовал в течение 2 дней, чтобы получить что-то, но пока это бессмысленно. Мне нужно управлять пользователями и их ролями, не более того.

Я попытался понять, как это сделать в MVC, но я не могу найти подробный учебник о том, как это сделать, либо в Интернете, либо в любой книге MVC 4.

Я начал с включения базы данных aspnet с помощью утилиты aspnet_regsql, создав следующие таблицы:

Tables added by aspnet_regsql

Что я нашел в учебнике, он не показывает, как взаимодействовать с этими таблицами (который, как я полагаю, связан с поставщиком членства по умолчанию), до сих пор я нашел, что для этого есть 3 основных варианта:

  • Поставщик членства по умолчанию (от которого я ничего не знаю)
  • Универсальные провайдеры
  • SimpleMembership

Я нашел этот учебник:

http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-7

Здесь они просят создать новый проект приложения MVC 4 с шаблоном интернет-приложения и скопировать все файлы, относящиеся к управлению учетной записью.

Я сделал это для своего проекта, но как только я попытаюсь войти в систему, я получаю:

Чтобы вызвать этот метод, свойство "Membership.Provider" должно быть экземпляром "ExtendedMembershipProvider".

который согласно этому форуму: http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/d352bb1b-577c-42b7-8872-5ed59cd65f32/

объясняется тем, как я определил поставщиков профиля, членства и roleManager в моем файле web.config, который определяется следующим образом:

<profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="DatabaseConnection" applicationName="/" />
  </providers>
</profile>
<membership>
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DatabaseConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
<roleManager enabled="true">
  <providers>
    <clear />
    <add connectionStringName="DatabaseConnection" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>

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

Вопрос № 1 Что такое поставщик членства, который используется при создании приложения MVC 4 с шаблоном интернет-приложения?

Вопрос № 2

Что я делаю неправильно с файлом web.config? Как я могу правильно определить поставщиков?

Вопрос № 3

Какой вариант мне подходит лучше? Если вы знаете хороший учебник для него, можете ли вы связать меня с ним?

Любая помощь будет действительно оценена! спасибо заранее!

Ответ 1

Поставщик членства, к которому вы используете, устарел. Новый Универсальный поставщик членства использует новые имена таблиц без префикса aspnet_.

1) Пожалуйста, взгляните на ссылку Скотта Хансельмана.

2) Вам не нужно profile, если вы его не используете. Неверная конфигурация roleManager.

FYI: укажите machineKey явно в web.config; это сэкономит вам много головной боли в будущем.

P.S. Я согласился с тобой. Я только что закончил читать Pro ASP.NET MVC 4 by Adam Freeman; он не упоминал о Членском Провайдере. ASP.NET MVC 4 and the Web API by Jamie Kurtz использует устаревший поставщик членства, если вы хотите прочитать.

Ответ 2

Вопрос № 1 Что такое поставщик членства, который используется при создании приложения MVC 4 с шаблоном интернет-приложения?

Ответ: SimpleMembershipProvider

Вопрос № 2 Что я делаю неправильно с файлом web.config? как я могу правильно определить поставщиков?

Ответ. Для SimpleMembershipProvider изменения в файле web.config не нужны. См. Здесь подробную информацию о настройке и настройке и учебное пособие: http://aaron-hoffman.blogspot.com/2013/02/aspnet-mvc-4-membership-users-passwords.html

Ответ 3

Членство и безопасность были чрезвычайно сложны в ASP.Net и все еще сложны в ASP.NET MVC. Но, к счастью, возможно вообще не использовать встроенное членство. Я создал простое решение и использовал его во многих проектах, а теперь добавил его в github. http://github.com/TesserisPro/ASP.NET-SImple-Security-Provider Вы можете легко настроить его.