C#Windows应用程序中基于许可证的配置

时间:2011-09-27 22:21:22

标签: c# winforms configuration acl

我正在使用C#(.NET 4.0)中的Windows应用程序,需要一些东西来实现一些基本的ACL规则,或者更具体地说,根据用户类型应用某些配置。

该应用程序具有许可证密钥,我们可以使用这些密钥来确定用户类型(即用户,安装程序,工程师)以及其他信息。

根据用户类型,某些功能,菜单,按钮和显示数据会有所不同。我可以根据用户类型硬编码在应用程序中显示和隐藏这些元素,但是我们有一个权限矩阵来定义权限,因此我想创建一个ACL,以便我们可以轻松地审核应用程序代码的矩阵。

我环顾四周,但System.Security命名空间中的很多ACL和安全代码似乎都是针对Windows和文件系统ACL进行的。

有人可以推荐在C#中实现简单ACL的任何现有类(最好是免费的)。

我只需要能够做到这样的事情:

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到确定GUI的外观以及根据密钥加载程序时可用的选项。

创建这个很容易,但如果已经完成,那就更好了。

2 个答案:

答案 0 :(得分:1)

如果要将应用程序部署到Windows 7或Windows Server 2003/2008,则可能需要考虑使用Windows附带的免费授权管理器功能。

有关Microsoft的完整概述,请参阅here

基本上,它允许您定义角色,每个角色可以执行的任务以及每个任务中允许的操作。

您可以从C#应用程序中使用API​​来查询授权存储,以便您可以查询特定角色可用的操作。这将返回分配给该角色的操作编号的汇总列表。然后,您可以测试特定操作的存在(或者如果缺少)并相应地自定义UI。

HTH, 迪安。

答案 1 :(得分:1)

你所谈论的内容并不多。

你有角色和角色有属性。单个属性可能出现在一个或多个角色中。很简单。

许可证密钥定义了正在使用的角色。从那里,加载属性列表,这些属性可以是独立的字符列表(“OPENCONTACT”,“EDITCONTACT”,DELETECONTACT“)或名称值对(100 = OPENCONTACT,101 = EDITCONTACT等)

虽然你可以使用AzMan,但它听起来比你需要的多一点。

角色/属性列表可以作为在运行时加载的加密资源提供......