ASP.net roles and Projects
РЕДАКТИРОВАТЬ - Переписал мой оригинальный вопрос, чтобы дать немного больше информации
Справочная информация
На своей работе я работаю над веб-приложением ASP.Net для наших клиентов. В нашей реализации мы используем такие технологии, как проверка подлинности с помощью форм с MembershipProviders и RoleProviders. Все шло хорошо, пока я не столкнулся с некоторыми трудностями при настройке ролей, потому что роли не являются общесистемными, а связаны с учетными записями клиентов и проектами.
Я не могу назвать нашу точную настройку / формулу, потому что я думаю, что наша компания не одобрила бы это ...
Какой клиент / проект?
Наша компания предоставляет управленческую информацию для наших клиентов на ежегодной (или иной временной основе) основе.
В наших системах заказчик / контракт состоит из:
Настройка сайта Extranet
В конечном итоге мы хотим, чтобы все клиенты имели доступ к их управленческой информации через нашу онлайн-систему. Экстранет состоит из двух сайтов:
Место измерения - самая интересная часть экстрасети. Мы создадим подмодули для новых обзоров, отчетов, управления и поддержки ресурсов, важных для исследования.
Наше решение Visual Studio состоит из ряда проектов. Одно веб-приложение с именем Portal для основы. Сайты и модули - это виртуальные каталоги в этом приложении (упрощает совместное использование MasterPages).
Какие роли?
Следующие пользователи (читай: роли) будут использовать систему:
А как насчет пользователей ASP.Net?
В системе будет много пользователей ASP.Net, давайте сосредоточимся на пользователях клиентов:
Структура URL
Это типичные ссылки в нашем приложении:
Мы также создадим URL-адрес документа, по которому вы можете запросить конкретный документ по его GUID. Система должна будет проверить, есть ли у пользователя права на документ. Документ относится к Измерению, Пользователь или определенные роли имеют определенные права на документ.
В чем проблема? (в конце концов ;))
Ролей недостаточно, чтобы определить, что пользователю разрешено видеть / получать доступ / загружать определенный элемент. Недостаточно сказать, что определенный элемент навигации доступен для менеджеров. Когда пользователь запрашивает измерение 1000, мы должны проверить, что у пользователя есть не только роль менеджера, но и роль менеджера для измерения 1000.
Обобщенная:
Как мы можем ограничить пользователей их учетными записями / измерениями?
(помните, суперпользователи видят все измерения, некоторые менеджеры только конкретные измерения)
Как мы можем применять роли на уровне продукта / измерения? (пользователь X может быть основным контактом для измерения 1, а просто менеджером для измерения 2)
Как мы можем ограничить доступ менеджера к экрану отчетов и только к отчетам их отдела?
Все с магией классов asp.net, возможно, с собственной реализацией ролевого провайдера.
Подобный вопрос / проблема Stackoverflow
ASP.NET, как управлять пользователями с разными типами ролей