我过去在ASP.Net中使用过的所有安全资料大部分都是基于角色的。这很容易实现,ASP.Net适用于这种类型的安全模型。但是,我正在寻找比简单的基于角色的安全性更细粒度的东西。
基本上我希望能够编写这样的代码:
if(SecurityService.CanPerformOperation("SomeUpdateOperation")){
// perform some update logic here
}
我还需要这样的行级安全访问:
if(SecurityService.CanPerformOperation("SomeViewOperation", SomeEntityIdentifier)){
// Allow user to see specific data
}
再次,细粒度的访问控制。有没有这样的东西已经建成?我可以放入ASP.Net并开始使用的一些框架,或者我将不得不自己构建它?
答案 0 :(得分:1)
您是否看过授权经理(AzMan)? http://msdn.microsoft.com/en-us/library/bb897401.aspx
它包含在Server 2003中,并且在服务器2008中有一些更新,并附带一个MMC管理工具。
您可以使用2003版本的服务器将数据存储在xml文件或AD / ADAM分区中,而在服务器2008中,他们添加了SQL支持。
此工具允许您以角色,任务和层次结构的层次结构将安全对象链接在一起。操作
您可以在Asp.net中将其用作基于角色的提供程序,但它们也包含.net类,以便您可以直接访问授权存储内容。
答案 1 :(得分:0)
我认为您可能正在寻找声明式安全性。声明性安全性允许您很好地“声明”谁可以在MSDN上访问代码上的属性,这里是基于角色的安全性的页面。这是一个例子:
[PrincipalPermissionAttribute(SecurityAction.Demand, Role="admins")]
public class foo
{
[PrincipalPermissionAttribute(SecurityAction.Demand, Role="Domain Admins")]
public void bar()
{
....
}
}