我在所有具有PrincipalPermission属性的业务对象上都有一个Delete方法。
例:
[PrincipalPermission(SecurityAction.Demand, Role = "Vendor Manager")]
public static bool Delete(Vendor myVendor)
{
//do work here
}
问题在于它似乎完全忽略了我的PrincipalPermission。无论任何角色,它都可以让任何人通过。
还有我忘记做的事情吗?我在“应用程序启动”部分的应用程序的global.asax中添加了以下内容:
AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);
但这也没有任何区别。
我还尝试了以下方法:
public static bool Delete(Vendor myVendor)
{
PrincipalPermission iPerm = new PrincipalPermission(null, "Vendor Manager");
iPerm.Demand();
//do work here
}
而且您会知道吗,这还行吗?
最佳答案
你得到答案了吗?我只是在自己的应用程序中对此进行了测试,并且效果很好。我专门不添加
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
而且,我使用的是表单身份验证(ASP.NET成员身份),MVC 2,.NET 3.5。
但是,我确实发现我是否使用以下方法装饰类,但方法装饰不起作用。
[PrincipalPermission(SecurityAction.Demand, Authenticated = true)]