Я создаю веб-приложение с использованием MVC3. У меня есть одна база данных, которая содержит все таблицы, которые я использую в приложении (включая таблицу «Пользователи» и «Роли», на которой сосредоточен этот вопрос).
Я уже настроил (очень быстро) аутентификацию пользователя с помощью SetAuthCookie. Однако, поскольку мое приложение выполняет разные роли, мне также необходимо иметь возможность выяснить, выполняет ли пользователь определенную роль, прежде чем он сможет получить доступ к определенным контроллерам.
Последние несколько дней я пытался и не смог внедрить различные решения отсюда и общий поиск в Интернете. Темами обсуждения были FormsAuthentication, IIdentity, IPrincipal, MembershipProvider, RoleProvider. И после нескольких неудачных попыток меня все смущает.
В прошлом я использовал материал учетных записей по умолчанию с использованием базы данных ASPNET Membership, и, поскольку мне вообще не приходилось его трогать, проблем не возникало. Но я бы предпочел, чтобы все мои таблицы были в одной и той же БД на этот раз. Я также предпочел бы, чтобы я мог декорировать контроллеры с помощью [Authorize], [Role = "Sysadmin"] и т.д.
Мне известно, что этот и аналогичные вопросы задаются часто, и что есть несколько доступных ресурсов, которые охватывают темы, описанные выше, но проблема в том, что решения конфликтуют или предполагают знание других смежных областей или наличие нестандартных классов и даже в некоторых случаях предоставляют некорректное решение «для простоты».
Итак, резюмируем:
- У меня есть пустой проект MVC3.
- У меня есть база данных с моей таблицей пользователей и таблицей ролей (у каждого пользователя может быть одна роль).
- Я хочу украсить контроллеры с помощью [Authorize], [Role = "Sysadmin"]
- Мне все равно, насколько сложным является решение. Я готов потратить столько времени, сколько необходимо, чтобы найти наиболее безопасное и эффективное решение.
Заранее спасибо