.NET中的权限环境

时间:2011-09-08 16:34:35

标签: c# .net winforms

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

为了保持性能和可扩展性,您认为实现这一目标的最佳方式是什么?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您可以使用Control来设置用户权限,我认为这很好(我有时用来控制它),从DataBase服务器或服务(Web或WCF)获取用户权限。 您可以制作2个相似的表单,其中第一个用于管理员,第二个用于用户有2或3个按钮小于管理员的用户,或者您可以是单个表单,您可以在其中隐藏或显示按钮和其他控制通过代码验证器。 我更喜欢的另一种方法是,基于工程软件模块。 尽可能多地构建DLL模块(需要更多时间进行编码),然后将所需模块加载或卸载并验证到所需用户。 也许用布尔值验证每个方法会很不错。

答案 2 :(得分:0)

不要过度思考,硬编码安全权限没有任何内在错误。

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