Авторизация / Роли в MVC5

У меня проблемы с использованием авторизации / ролей в MVC5 (VS2013).

Аутентификация работает в значительной степени из коробки (то есть, просто используя Visual Studio для создания проекта MVC по умолчанию). Я меняю DefaultConnection Строка подключения к действительной (но не существующей) базе данных. Затем я регистрирую нового пользователя, и база данных создается автоматически с таблицами, такими как AspNetUsers а также AspNetRoles,

Тем не менее, я не могу ничего делать с ролями. Первое, что нужно сделать, - добавить роль с кодом C#, например:

Roles.CreateRole("Admin");

Я получаю исключение с сообщением:

"Функция Role Manager не была включена".

Я включаю его в web.config с помощью:

<roleManager enabled="true"/>

А теперь получите исключение:

"Невозможно подключиться к базе данных SQL Server."

Раньше очень легко работать с System.Web.Security.SqlRoleProvider, но не с новым провайдером, который поставляется по умолчанию с MVC5. Есть много очень сложных статей по этому вопросу, но мне кажется, что это что-то настолько важное и прямолинейное, что должен быть простой способ заставить его работать.

Большое спасибо за любую помощь.

2 ответа

Я решил это сейчас. Оказывается, класс Roles совершенно не имеет отношения к управлению ролями в MVC5, по крайней мере, с точки зрения готовой конфигурации.

Класс Roles и класс Membership по-прежнему существуют, а поставщик настроен на SqlMembershipProvider,

Тем не менее, это не поставщик, используемый AccountController, который вообще не использует класс Membership; оно использует Microsoft.AspNet.Identity.UserManager,

Пока генерируется AccountController предоставляет множество примеров использования UserManagerне имеет ничего общего с ролями.

Эквивалентный класс для ролей Microsoft.AspNet.Identity.RoleManager, Есть полная документация для этого в MSDN

Я предлагаю обратиться к этой статье, поскольку она показывает, как вы можете создавать роли. После того как вы создали необходимые роли, вы можете использовать метод UserManager.AddToRole или UserManager.AddToRoleAsync, чтобы добавить пользователя к определенной роли.

Другие вопросы по тегам