Роли .NET, членство, проверка подлинности с помощью форм, MVC3 - PullRequest
0 голосов
/ 05 ноября 2011

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

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

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

В прошлом я использовал материал учетных записей по умолчанию с использованием базы данных ASPNET Membership, и, поскольку мне вообще не приходилось его трогать, проблем не возникало. Но я бы предпочел, чтобы все мои таблицы были в одной и той же БД на этот раз. Я также предпочел бы, чтобы я мог декорировать контроллеры с помощью [Authorize], [Role = "Sysadmin"] и т.д.

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

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

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

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

1 Ответ

1 голос
/ 01 декабря 2011

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

...