我是一名 C# 开发人员。我同时开发 Windows 和 Web 应用程序。我想构建一个具有基于角色的系统的 Winforms 应用程序。所有用户必须在角色/组中。然后我们将“查看、添加、更新……”等权限分配给角色/组。角色/组是动态的,所以我们让用户定义它。
是否有任何框架和好的示例项目来实现它?
我是一名 C# 开发人员。我同时开发 Windows 和 Web 应用程序。我想构建一个具有基于角色的系统的 Winforms 应用程序。所有用户必须在角色/组中。然后我们将“查看、添加、更新……”等权限分配给角色/组。角色/组是动态的,所以我们让用户定义它。
是否有任何框架和好的示例项目来实现它?
我通常自己动手,因为 .NET 框架在这方面功能非常齐全,但您可以尝试MS Authorization and Profile Application Block。
对于蹩脚的实现细节,你看过“校长”吗?在这里查看我的回复。使用这种方法,您可以在代码中使用基于角色的安全性 - 例如:
[PrincipalPermission(SecurityAction.Demand, Role="ADMIN")]
static void SomeMethod()
{...}
运行时本身现在将验证用户是否必须具有您的“ADMIN”角色才能进入该方法(显然您也可以通过选中来禁用 UI 中的选项IsInRole(...)
)。很强大。
如果您不太热衷于重新发明轮子,请查看名为Visual Guard的产品。它允许您以最少的工作轻松地为您的应用程序添加安全性,并拥有一套功能齐全的工具。
如果您已经使用过 ASP.NET,那么您可能熟悉 ASP.NET 成员资格/角色/配置文件系统,具有默认提供程序以及添加您自己的提供程序而无需太多麻烦的能力。
如果您可以在 Windows 窗体或 WPF 应用程序中使用所有这些,那不是很好吗?是的?那么看看ASP.NET 应用程序服务吧!您只需设置一个网站以提供身份验证 URL,然后告诉您的应用程序使用它。您可以创建自己的自定义登录窗口并在需要时让应用服务打开它,或者使用自己的逻辑并自己调用方法。
它完全支持“离线模式”,它缓存密码的哈希值以进行比较,它还可以缓存角色并允许您使用配置文件设置。