首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码是否忽略了PrincipalPermission属性?

代码是否忽略了PrincipalPermission属性?
EN

Stack Overflow用户
提问于 2010-11-09 05:20:21
回答 3查看 5.2K关注 0票数 4

我对所有具有PrincipalPermission属性的业务对象都有一个Delete方法。

示例:

代码语言:javascript
复制
[PrincipalPermission(SecurityAction.Demand, Role = "Vendor Manager")]
        public static bool Delete(Vendor myVendor)
        {

            //do work here
        }

问题是它似乎完全忽略了我的PrincipalPermission。它允许任何人通过,无论他们是什么角色。

还有什么我忘了做的事吗?我已经在应用程序启动部分的应用程序global.asax中添加了以下内容:

代码语言:javascript
复制
AppDomain.CurrentDomain.SetPrincipalPolicy(System.Security.Principal.PrincipalPolicy.WindowsPrincipal);

但这也没有什么不同。

我还尝试了以下几种方法:

代码语言:javascript
复制
public static bool Delete(Vendor myVendor)
        {
            PrincipalPermission iPerm = new PrincipalPermission(null, "Vendor Manager");
            iPerm.Demand();

            //do work here
        }

你不知道吗,这工作得很好!有什么想法可以解释为什么它以一种方式工作而不是另一种方式工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-02 11:22:23

你得到答案了吗?我刚刚在我自己的应用程序中测试了这一点,它工作得很好。我特别不会添加

代码语言:javascript
复制
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

而且,我使用的是表单身份验证(ASP.NET成员资格)、MVC2、.NET 3.5。

然而,我发现如果我用下面的方法修饰我的类,就不能工作。

代码语言:javascript
复制
[PrincipalPermission(SecurityAction.Demand, Authenticated = true)]
票数 2
EN

Stack Overflow用户

发布于 2012-07-05 03:46:56

对于任何人来说,只有一个观察结果表明这个样本不起作用。检查角色的名称是否符合您当地的文化。例如,如果您居住在墨西哥,则必须使用:@"BUILTIN\Administradores"而不是@"BUILTIN\Administrators"

票数 1
EN

Stack Overflow用户

发布于 2010-11-09 05:42:45

您是否验证了Windows主体恰好不具有所需的权限?像这样的东西(从here修改而来) --我认为--应该模仿这种行为,并允许您逐步执行。它应该指示是否授予权限。

如果这通过了,那么我希望属性也能传递下去。如果这失败了,但是属性通过了,那么我和您一样被难住了。

代码语言:javascript
复制
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();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4128186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档