如何限制方法的允许调用者?

时间:2014-05-09 10:41:01

标签: c# security .net-4.0 attributes code-access-security

在C#4.0+中,是否有一种基于方法属性限制方法的允许调用者的好方法?

我天真地认为这就是CAS的全部内容 - 现在.NET 4.0中的变化似乎表明新的CAS只适用于程序集级别,而且只适用于沙盒应用程序......这不是'我之后的事情。

我想象这样的事情:

[MyDangerousPermission]
public void DoSomethingDangerous()
{
    . . .
}

并在另一个班级或集会中:

[MyDangerousDemand]
public void AllowedCaller()
{
    DoSomethingDangerous();
}

并且在调用堆栈中没有[MyDangerousDemand] 的情况下,对DoSomethingDangerous()的任何调用都将失败(例如,抛出SecurityException)。

不可能?

(我的主要应用程序是在网络应用程序中,以防万一)。

1 个答案:

答案 0 :(得分:0)

我们仍然使用CAS作为您的指定并且没有遇到任何麻烦。查看PrincipalPermissionAttribute

但是,如果它是一个Web应用程序,您应该使用您正在使用的框架创建的属性之一。对于ASP.NET MVC,它被称为AuthorizeAttribute。即在顶层而不是在业务层中进行授权。