在覆盖的方法中使用不同的 PrincipalPermissions

Using different PrincipalPermissions in an overridden method

我的基础 class 中有一个 DeleteAll 方法,需要调用特定角色(“Remover”)。我有第二个 class 派生自基础 class。在派生的 class 中,我想重写 DeleteAll 方法,这样我就可以为该方法要求一个不同的角色(“操作员”)。

public BaseClass
{
    [PrincipalPermission(SecurityAction.Demand, Authenticated = true, Role = "Remover")]
    public virtual void DeleteAll(IEnumerable<Guid> ids)
    {
        //Code to delete each id
    }
}

public DerivedClass : BaseClass
{
    [PrincipalPermission(SecurityAction.Demand, Authenticated = true, Role = "Operator")]
    public virtual void DeleteAll(IEnumerable<Guid> ids)
    {
        base.DeleteAll(ids);
    }
}

如果我调用 DerivedClassDeleteAll 方法,它将要求用户同时具有 “操作员”和“删除器”角色.我只希望需要“操作员”角色。

有没有办法在覆盖方法时覆盖 PrincipalPermission?

我认为问题在于您在 derivedclass 中使用了 baseclass,因此导致 DerivedClassDeleteAll 方法需要同时具有“运算符”和“删除者”角色。

您可以尝试使用 OR 组合多个 PrincipalPermissionAttribute 要求。
有关详细信息,请参阅下面的 link。

How to apply OR in PrincipalPermission in base and derive class