У меня есть веб-сайт ASP.NET 2.0 [без ajax ... пока], который будет развернут в скомпилированном виде на нескольких сайтах клиентов. Как правило, сайт будет только интранет. Некоторые клиенты доверяют всем своим людям и не заботятся об ограничении доступа к функциям сайта и / или страницы, другие не доверяют никому и хотят, чтобы только определенные люди и / или группы могли просматривать определенные страницы, нажимать определенные кнопки и т. Д. и др.
Я мог бы сделать какое-то домашнее решение, возможно, получить разрешения на доступ из таблицы базы данных, но перед тем, как идти по этому пути, я подумал, что задам вопрос в SO: что является хорошим решением для этой ситуации? предпочтительно тот, которым можно полностью управлять в файле web.config и / или базе данных, поскольку перестройка веб-сайта невозможна (для клиента, и я не хочу делать это для них снова и снова). Интеграция с Active Directory будет бонусом, но не обязательным требованием (если только это не будет проще).
в качестве отправной точки, я думаю, что каждой странице / функциональной точке сайта должна быть присвоена идентификационная информация и она связана с группой разрешений ...
РЕДАКТИРОВАТЬ: раздел авторизации web.config, разрешающий / запрещающий доступ по роли и пользователю, хорош, но это только половина проблемы - другая половина контролирует доступ к отдельным методам (кнопкам и т. Д.) На каждой странице. Например, некоторые пользователи могут просматривать whatchamacallits, в то время как другим разрешено редактировать, создавать, удалять или отключать / включать их. Все эти кнопки / ссылки / действия находятся на странице просмотра ...
[в идеале я бы сделал отключенные кнопки невидимыми, но здесь это не важно]
РЕДАКТИРОВАТЬ: пока что есть хорошие предложения, но пока нет полного решения - все еще склоняюсь к решению на основе базы данных ...
- Атрибуты требований разрешений безопасности будут вызывать исключения при нажатии кнопок, что не очень удобно; я бы предпочел скрыть кнопки, которые пользователь не может использовать
- элемент управления LoginView также интересен, но потребует репликации большей части содержимого страницы несколько раз (по одному разу для каждой роли) и может не обрабатывать случай, когда пользователь находится в более чем одной роли - я не могу предположить, что роли иерархическая, так как они будут определены клиентом
РЕДАКТИРОВАТЬ: платформа Win2K / XP, Sql Server 2005, ASP.NET 2.0, не использует AJAX