代码忽略PrincipalPermission属性?
我对所有具有PrincipalPermission属性的业务对象都有一个Delete方法。代码忽略PrincipalPermission属性?
例子:
[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)]
您是否验证过Windows主体没有碰到您要求的权限?像这样的东西(从here修改) - 我想 - 应该模仿这种行为,并允许你一步一步。它应该表明是否授予许可。
如果通过,那么我希望该属性也通过。如果这失败了,但属性通过了,那么我就像你一样难住了。
static void Main(string[] args)
{
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
PrincipalPermission principalPerm = new PrincipalPermission(null, "Vendor Manager");
try
{
principalPerm.Demand();
Console.WriteLine("Demand succeeded.");
}
catch (Exception secEx)
{
Console.WriteLine("Demand failed.");
}
Console.ReadLine();
}
哈..我只是试过这个。我将这样的代码添加到了Delete方法的开头,并且在完成该方法后正确验证了用户。 Hrmph! – 2010-11-08 21:52:03
@Amanda - 嗯......这令人沮丧。我试图做你(最初)做的,并添加了一个具有该属性的方法。它似乎正确地“要求”我的角色;它花了一段时间,但是当我试图调用需要“供应商管理者”角色的方法时,最终抛出了安全异常。我不知道为什么它会为你扮演flaika(??) – Steven 2010-11-08 22:16:00
其实,我刚刚注意到你提到了global.asax。我对ASP.Net并不熟悉,但我想知道这是否是这种差异。我在控制台应用程序中完成了所有测试,并且该属性似乎在该环境中按预期工作。 – Steven 2010-11-08 22:21:37
只有一个观察结果说任何人说样本不起作用。根据您当地的文化检查角色的名称。例如,如果您居住在墨西哥,则必须使用:@"BUILTIN\Administradores"
而不是@"BUILTIN\Administrators"
。
如果你用@Steven注释来装饰类,任何人都知道为什么方法装饰不起作用?我也遇到同样的情况。 – JasonS 2012-01-24 07:02:50
下面是答案:http://connect.microsoft.com/VisualStudio/feedback/details/95127/nested-principalpermission-not-applied – JasonS 2012-01-24 19:04:19
答案已消失。也许在评论中描述它? – 2015-03-25 14:55:45