#asp.net-mvc-3 #authentication #authorization #membership #roles
#asp.net-mvc-3 #аутентификация #авторизация #членство #роли
Вопрос:
Я создаю веб-приложение с использованием MVC3. У меня есть одна база данных, которая содержит все таблицы, которые я использую в приложении (включая таблицу пользователей и ролей, которые находятся в центре внимания этого вопроса).
Я уже настроил его (очень быстро) для аутентификации пользователя с помощью SetAuthCookie. Однако, поскольку мое приложение имеет разные роли, мне также необходимо иметь возможность выяснить, находится ли пользователь в определенной роли, прежде чем они смогут получить доступ к определенным контроллерам.
Я провел последние несколько дней, пытаясь и не имея возможности реализовать различные решения отсюда и общие онлайн-поиски. Темами обсуждения были проверка подлинности форм, IIdentity, IPrincipal, MembershipProvider, RoleProvider. И после нескольких неудачных попыток я полностью запутался во всем.
В прошлом я использовал учетные записи по умолчанию, используя базу данных участников ASPNET, и, поскольку мне вообще не приходилось ее трогать, проблем не было. Но я бы предпочел, чтобы на этот раз все мои таблицы были в одной базе данных. Я бы также предпочел, чтобы я мог украсить контроллеры [Авторизовать], [Роль = «Системный администратор»] и т.д.
Я знаю, что этот и подобные вопросы задают много и что существует несколько доступных ресурсов, которые охватывают темы, описанные выше, но проблема в том, что решения противоречат друг другу или предполагают знание других смежных областей или наличие нестандартных классов, и даже в некоторых случаях предоставляют ошибочное решение «для простоты».
Итак, резюмируем:
- У меня есть пустой проект MVC3.
- У меня есть база данных с моей таблицей пользователей и таблицей ролей (у каждого пользователя может быть одна роль).
- Я хочу украсить контроллеры [Авторизовать], [Роль =»Системный администратор»]
- Меня не волнует, насколько сложным является решение. Я готов потратить столько времени, сколько необходимо, чтобы получить наиболее безопасное и эффективное решение.
Заранее спасибо
Ответ №1:
Вы можете написать пользовательских поставщиков членства, вот ссылка, которая объясняет больше: Поставщики членства клиентов MVC 3