Привилегированная среда в .NET - PullRequest
1 голос
/ 08 сентября 2011

Я занимаюсь разработкой приложения .NET для Windows (c #), чтобы иметь некоторые финансовые счета для наших клиентов.Сотрудники моей компании будут отвечать за регистрацию всех данных клиентов, но у них должен быть доступ другого уровня.Итак, мой вопрос, каков наилучший способ предоставления привилегий пользователям?Допустим, у некоторых людей будут права на изменение некоторых параметров, а у других - нет.Я думаю об отключении некоторых элементов управления в окнах форм в зависимости от уровня привилегий, но я думаю, что это жесткое кодирование.

Какой, по вашему мнению, лучший способ добиться этого, чтобы сохранить производительность и масштабируемость?

Ответы [ 3 ]

2 голосов
/ 08 сентября 2011

Как правило, вы можете использовать интерфейс IPrincipal из .Net для реализации своей собственной системы привилегий. IPrincipal предоставляет вам единственный метод IsInRole (), где вы можете проверить, является ли текущий пользователь членом определенной роли, и поддерживать права доступа через роли. Вы можете использовать класс WindowsPrincipal для получения пользовательских ролей из локального каталога пользователя или из AD.

С другой стороны, поскольку ваше приложение чрезвычайно ориентировано на данные, вы можете просто использовать управление правами пользователей на сервере базы данных (MS SQL, MySQL и т. Д.), Чтобы предоставить пользователям права доступа. Это более безопасно, но требует от вас соответствующего управления вашим сервером.

1 голос
/ 08 сентября 2011

Вы можете поиграть с Control, чтобы установить привилегии пользователя, что, я думаю, хорошо (я иногда использовал это для контроля), получая права пользователя с сервера базы данных или службы (Web или WCF).Вы можете создать 2 аналогичные формы, где первая предназначена для администратора, а вторая - для пользователя, у которого у пользователя на 2 или 3 кнопки меньше, чем для администратора, или у вас может быть одна форма, в которой вы можете скрыть или показать кнопки и другие элементы управления черезкод валидатора.Другой способ, которым я бы предпочел, - это разработка программного модуля на основе.Создайте как можно больше модулей DLL (это занимает больше времени), чем загрузка или выгрузка и проверка требуемого модуля для нужного пользователя.И, возможно, было бы неплохо проверить каждый метод с помощью логического значения.

0 голосов
/ 08 сентября 2011

Не забывайте об этом, в жестких кодах разрешений безопасности нет ничего плохого.

Однако я бы дважды проверил разрешения в коде, даже если кнопка отключена.Их легко включить обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...