Я делал именно это раньше, и это не тривиальная реализация. Вы захотите взглянуть на класс SecurityPermission.
[http://msdn.microsoft.com/en-us/library/system.security.permissions.securitypermission.aspx][1]
Я делал это раньше, используя XML (что я не уверен, что буду делать снова) и сохраняя этот XML в качестве списка разрешений внутри SQL-сервера в столбце XML через хранимую процедуру CLR. XML будет иметь элемент, называемый «разрешение», а затем разрешение будет фактически ENUM внутри кода. Каждое разрешение было новой реализацией класса SecurityPermission (ссылка выше). Пользователи были привязаны к группам, которые были определены на сервере SQL, а затем, когда пользователь добавлялся/удалялся из групп, XML-документ обновлялся, чтобы отразить, какие группы они разделяли. из.
Как только пользователь войдет в систему, учетные данные пользователя будут загружены в хранилище приложений (сеанс), а затем будут соответствующим образом доступны. Когда требуется авторизация, XML в магазине приложений загружается в SecurityPermission с помощью метода «FromXML». В этот момент я бы использовал следующие методы, чтобы определить, есть ли у пользователя разрешение:
- Требовать
- Пересекать
- Союз
- IsUnrestricted
- Иссубсетоф
и т. д., и т. д., и т. д.
В этот момент после выполнения требования я смог определить, имеет ли вызывающий доступ доступ в соответствии с тем, как я реализовал свои процедуры безопасности в SecurityPermissions.
Опять же, это упускает ТОННУ деталей, но это должно направить вас по правильному пути.
Взгляните также на это пространство имен: [2]: http://msdn.microsoft.com/en-us/library/system.security.permissions.aspx "System.Security.Permissions"
person
Donn Felker
schedule
16.09.2008