2010-01-22 123 views
0

我想创建一个基于模块级安全的应用程序。这个想法是,我们将有一个用户登录,抓住角色,抓住那些角色有权访问的页面,然后在这些页面中抓取他们有权访问的模块,然后获取他们有权访问的模块中的功能(列表,创建,编辑,删除)。这种方式在管理员屏幕上有人可以允许或拒绝将模块和模块功能分组。基于模块的安全

有没有人看到过这样的示例项目,或者对如何实现这个有任何线索?我真的很想在n层架构上尝试。

回答

1

使用基本会员系统创建您的网站。将您的页面分组到文件夹中,并在每个文件夹中都有Web.Config文件来控制访问。这大部分都是开箱即用的功能。您必须编写的唯一自定义代码是在创建管理员表单时。

至于细晶粒访问,如果他们不能访问的页面,他们无法访问自己的方法......

http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

UPDATE:

如果用户。 IsInRole( “管理员”)...

http://www.4guysfromrolla.com/articles/082703-1.2.aspx

在th在代码隐藏中,您可以通过编程方式检查角色并相应地显示/启用面板/模块:-)

+0

感谢您的信息。我非常了解这一点,但我想知道是否有可能有2个角色可以访问页面的应用程序,但是在该页面中,将根据角色加载不同的模块,以及基于滚动的模块中的不同功能。那有意义吗?一页将有不同的模块和模块功能基于用户卷... – 2010-01-23 03:04:38

+0

@Jesse:是的,看到更新。您可以编程方式检查角色并根据用户是否在该角色加载模块。你可能会发现一个更优雅的方式来做同样的事情取决于你的对象设计:-) – IrishChieftain 2010-01-24 19:35:10

+1

感谢您的答案和更新(道歉的延迟):) – 2016-03-28 17:55:29

0

我会使用基类来完成您描述的效果。在您的基类中,您可以添加所需的所有可用方法,但在基类中提供了一种授权方法,允许方法根据它们允许拥​​有的角色来标识自己。所有这些都可以使用web.config配置,如果你计划的话。很多时候,基于“文件夹”的SQL成员资格方法不够健壮。我想作为一个例子,你可以建立你自己的(或在System.Security命名空间中找到一个)安全枚举来定义访问级别,然后将访问级别从AD中(或任何地方)的组映射到枚举。然后这些方法可以使用安全枚举对用户对象进行确定,以确定用户的访问是否允许该功能。