Конфигурация на основе лицензии в приложении C # Windows - PullRequest
3 голосов
/ 28 сентября 2011

Я работаю над приложением Windows на C # (.NET 4.0) и мне нужно что-то для реализации некоторых базовых правил ACL или, более конкретно, применения определенных конфигураций в зависимости от типа пользователя.

Приложение имеет лицензионные ключикоторые мы можем использовать для определения типа пользователя (например, «Пользователь», «Установщик», «Инженер») среди других элементов информации.

В зависимости от типа пользователя будут отображаться определенные функции, меню, кнопки и данные дисплея.разные.Я мог бы просто показать и скрыть эти элементы в приложении на основе типа пользователя, но у нас есть матрица разрешений, которая определяет разрешения, поэтому я хотел бы создать ACL, чтобы мы могли легко проверять матрицу в коде приложения.

Я осмотрелся, но большая часть ACL и кода безопасности в пространстве имен System.Security, похоже, созданы для ACL для Windows и файловой системы.

Может кто-нибудь порекомендовать какие-либо существующие классы (желательно бесплатные), которые реализуют простые ACL в C #.

Мне просто нужно быть в состоянии сделать что-то вроде этого:

ACL acl = new ACL();
acl.addRole("User");
acl.addRole("Manufacturer");

acl.addResource("SpecialButton");

acl.deny("SpecialButton");
acl.allow("SpecialButton", "Manufacturer");

// so later in my app I can do

theUserType = "Manufacturer";
// ...
if (acl.isAllowed(theUserType, "SpecialButton")) {
    SpecialButton.Visible = true;
}

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

Это достаточно легко создать, но если это уже сделано, то это даже лучше.

Ответы [ 2 ]

1 голос
/ 04 октября 2011

На самом деле мало что о чем вы говорите.

У вас есть роли, а у ролей есть атрибуты.Один атрибут может появляться в одной или нескольких ролях.Достаточно просто.

Лицензионный ключ определяет используемую роль.Затем загрузите список атрибутов, который может быть либо отдельным списком символов («OPENCONTACT», «EDITCONTACT», DELETECONTACT »), либо парами« имя-значение »(100 = OPENCONTACT, 101 = EDITCONTACT и т. Д.)

Хотя вы можете использовать AzMan для этого, это немного больше, чем кажется, что вам нужно.

Список ролей / атрибутов может быть доставлен как зашифрованный ресурс, который загружается во время выполнения ...

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

Если вы развертываете свое приложение в Windows 7 или Windows Server 2003/2008, вы можете рассмотреть возможность использования бесплатной функциональности диспетчера авторизации, которая поставляется с Windows.

См. здесь для полного обзора от Microsoft.

По сути, он позволяет вам определять роли, задачи, которые может выполнять каждая роль, и операции, допустимые в каждой задаче.

Существует API, который вы можете использовать в своем приложении C # для запроса к хранилищу авторизации, чтобы вы могли затем запросить, какие операции доступны для определенной роли. Это вернет вам сводный список номеров операций, назначенных этой роли. Затем вы можете проверить наличие определенной операции (или ее отсутствие) и соответствующим образом настроить свой пользовательский интерфейс.

НТН, Дин.

...