Роли .NET, членство, проверка подлинности форм, MVC3

#asp.net-mvc-3 #authentication #authorization #membership #roles

#asp.net-mvc-3 #аутентификация #авторизация #членство #роли

Вопрос:

Я создаю веб-приложение с использованием MVC3. У меня есть одна база данных, которая содержит все таблицы, которые я использую в приложении (включая таблицу пользователей и ролей, которые находятся в центре внимания этого вопроса).

Я уже настроил его (очень быстро) для аутентификации пользователя с помощью SetAuthCookie. Однако, поскольку мое приложение имеет разные роли, мне также необходимо иметь возможность выяснить, находится ли пользователь в определенной роли, прежде чем они смогут получить доступ к определенным контроллерам.

Я провел последние несколько дней, пытаясь и не имея возможности реализовать различные решения отсюда и общие онлайн-поиски. Темами обсуждения были проверка подлинности форм, IIdentity, IPrincipal, MembershipProvider, RoleProvider. И после нескольких неудачных попыток я полностью запутался во всем.

В прошлом я использовал учетные записи по умолчанию, используя базу данных участников ASPNET, и, поскольку мне вообще не приходилось ее трогать, проблем не было. Но я бы предпочел, чтобы на этот раз все мои таблицы были в одной базе данных. Я бы также предпочел, чтобы я мог украсить контроллеры [Авторизовать], [Роль = «Системный администратор»] и т.д.

Я знаю, что этот и подобные вопросы задают много и что существует несколько доступных ресурсов, которые охватывают темы, описанные выше, но проблема в том, что решения противоречат друг другу или предполагают знание других смежных областей или наличие нестандартных классов, и даже в некоторых случаях предоставляют ошибочное решение «для простоты».

Итак, резюмируем:

  • У меня есть пустой проект MVC3.
  • У меня есть база данных с моей таблицей пользователей и таблицей ролей (у каждого пользователя может быть одна роль).
  • Я хочу украсить контроллеры [Авторизовать], [Роль =»Системный администратор»]
  • Меня не волнует, насколько сложным является решение. Я готов потратить столько времени, сколько необходимо, чтобы получить наиболее безопасное и эффективное решение.

Заранее спасибо

Ответ №1:

Вы можете написать пользовательских поставщиков членства, вот ссылка, которая объясняет больше: Поставщики членства клиентов MVC 3