. net中的特权环境

本文关键字:环境 特权 net | 更新日期: 2023-09-27 18:08:05

我正在开发一个。net windows应用程序(c#)来为我们的客户保存一些财务账户。我公司的人将负责注册所有客户数据,但他们必须有不同级别的访问权限。所以我的问题是,向用户授予特权的最佳方式是什么?假设有些人有修改某些参数的权限,而其他人没有。我正在考虑根据级别特权禁用windows窗体中的一些控件,但我认为这是硬编码。

为了保持性能和可伸缩性,你认为最好的方法是什么?

. net中的特权环境

通常你可以使用。net的IPrincipal接口来实现你自己的特权系统。IPrincipal为您提供了唯一的方法IsInRole(),您可以在其中检查当前用户是否是某个角色的成员,并通过角色维护访问权限。您可以使用windowsprprincipal类从本地用户目录或AD获取用户角色。

另一方面,因为你的应用程序是非常以数据为中心的,你可以使用你的数据库服务器(MS SQL, MySQL等)的用户权限管理来授予用户访问权限。这更安全,但需要您相应地管理您的服务器。

您可以使用控件来设置用户权限,我认为这很好(我有时用来控制它),从数据库服务器或服务(Web或WCF)获得用户权限。你可以做两个类似的表单,第一个是给管理员的,第二个是给用户的,用户比管理员少2到3个按钮,或者你可以是一个单一的表单,你可以隐藏或显示按钮和其他控件通过代码验证器。我更喜欢的另一种方式是,基于软件模块的工程。构建尽可能多的DLL模块(它需要更多的时间来编码),而不是加载或卸载并验证所需的模块给所需的用户。也许用布尔值验证每个方法会很好。

不要想太多,硬编码安全权限本身并没有什么问题。

然而,我会仔细检查代码中的权限,即使按钮被禁用。在外部启用它们很容易。