2010-09-17 76 views
3

我正在研究内部Web应用程序(只有员工可以登录),并需要一些帮助来找出处理个人用户对系统的权限的好方法。需要帮助来保护ASP.NET Web应用程序

系统本身在C#/ ASP.NET(4.0/Webforms/Forms Authentication)/ SQL Server 2008中,并且有几个不同的区域,这些区域会有不同的权限集合。您可以将其视为基本的粗劣场景(创建,查看,更新,删除),尽管这些将适用于系统的不同方面。我想提及这不是一种CMS系统,所以我不能选择一个像DotNetNuke或任何其他开源项目,这是从头开发的,我可以使用开源库)

对于复杂系统设计User Permission系统,可能有5-6个不同的部分,每个部分都包含10-15个不同的视图/更新/删除,这会是一个好方法吗?

的这里的目标是使它:

  1. 理解的用户(管理员)使用/套起。
  2. 易于维护代码明智。
  3. 容易适应需要新的权限(不同类型或不同点)。

有浮现在脑海两种方法:

方法1:

尝试使用内置的ASP.NET角色系统来定义不同的权限,并从那里管理。我可以构建自定义页面来处理不同的区域并为用户分配权限集。我相信这也允许我在默认情况下使用当前会话对象来为用户包含系统中的所有权限。 (HttpContext.User.IsInRole()等...)。

现在,虽然我认为这种方法可行,但我不确定这将很容易维护或适应未来的需求。看起来,这将是更快的方式,让它起飞并运行,但不是最好的长期。

方法2:

推出自己的。在这个场景中,我将设置数据库表来存储应用程序每个部分的真/假风格权限。然后,我会检索该信息并将其放入会话中,并随时根据需要检查是否有人有权执行某些操作。然后,我会建立自定义页面来管理列表等。

看来这种方法可能是更可维护的长期解决方案。它给了我更多的权力,以及如何处理。但是,我基本上仍然在做着角色系统在方法1中为我提供的工作。然而,我仍然赞同这种方法。


最后,我不确定两种方法是否是处理这种情况的最佳方法。任何人都可以帮助解释为什么上述任何一个是好的/坏的?或者甚至建议一种不同的替代方案,以“一般”的方式来处理它。这是我在这方面的第一个主要工作,所以我没有很多经验来尝试通过权限“保护”这样的应用程序。任何和所有的帮助表示赞赏!

回答

2

使用内置的方法,除非你有一个特定的架构不需要。如果你不使用内置的,你可以选择推出你自己的提供者实现,但你应该遵循与系统内部构建相同的模板,因为它涵盖了许多你应该考虑的安全性问题。

甚至有内置的配置页面,用于快速和肮脏的用户维护。

+0

感谢您的信息,角色和权限!我知道使用内置系统会降低复杂性。我只是主要关心不可避免的数百个不同的维护权限。我当然确实看到让系统处理ms执行的好处。谢谢! – Delebrin 2010-09-17 15:47:10