Я бы предложил абстрагировать разрешения вашего веб-приложения с помощью концепции поставщика ролей. Начиная с версии 2.0, это предоставляется для .NET как System.Web.Security.RoleProvider .
Основная идея заключается в том, что вы используете существующую инфраструктуру, выписывая свои проверки разрешений на основе инфраструктуры, а не на конкретный механизм хранения. Затем вы можете подключить любой доступный механизм хранения, будь то файл XML, база данных или даже хранилище авторизаций , с помощью диспетчера авторизации программного обеспечения Windows (который позволяет легко связать ваши пользовательские разрешения с LDAP). , в качестве одного примера - не требуется код для настройки).
Если вы решите использовать базу данных в качестве механизма хранения, будет поддерживаться несколько баз данных для автоматического создания базовых таблиц, которые необходимы платформе. Это включает в себя запуск .NET в Mono и использование модели поставщика ролей поверх MySQL.
См. Реализация поставщика ролей для получения дополнительной информации. Вполне возможно, что в других языках / средах также есть библиотеки, которые вы могли бы использовать для реализации этой концепции - это стоит посмотреть.
РЕДАКТИРОВАТЬ : Я также должен указать, что конфигурация того, как ваше веб-приложение связывается с механизмом хранения, выполняется через файл web.config и не требует изменений кода. Я нашел это очень полезным для тестирования рабочей версии кодовой базы на моем локальном компьютере, используя XML-файл для имитации разрешений вместо обычного поставщика базы данных - и все это путем изменения двух строк в web.config.
Еще одна вещь, которую я забыл упомянуть, это то, что вы можете подключать своих собственных провайдеров, расширяя базовые классы, позволяя использовать модель разрешений, но при этом использовать собственную систему хранения (например, битовые маски, если вы действительно хотел).