很难获得有关在Orchard视图中工作的权限的条件代码



我正试图在我的视图中做这样的事情:

@if (AuthorizedFor(MyNameSpace.Security.Permissions.Client))
{
    <p>This is the Client view</p>
}
else if (AuthorizedFor(MyNameSpace.Security.Permissions.Manager))
{
    <p>This is the Manager view</p>
}

我的权限包括Manager和Client,Client具有ImpliedBy = new[] { Manager }。管理者被列为管理员角色,客户被列为参与者角色。

我的期望是,如果经理登录,他们将只看到经理视图。但是,由于Manager具有客户端权限,因此逻辑仅显示第一个(客户端视图)。如果我同时发出if语句,那么两者都会弹出。以客户端身份登录时,我只能看到客户端视图。

然而,这是有道理的,是否可以在不做任何重大事情的情况下围绕这一点进行编码?我使用的是我自己的前端,没有绑定到部件,所以ContentPermission模块不是一个选项。

类似的东西

@if (AuthorizedFor(MyNameSpace.Security.Permissions.Client))
{
    if (AuthorizedFor(MyNameSpace.Security.Permissions.Manager) {
        <p>This is the Manager view</p>
    } else {
        <p>This is the Client view</p>
    }
}

做你做的,但从最强大的角色开始:

@if (AuthorizedFor(MyNameSpace.Security.Permissions.Manager))
{
    <p>This is the Manager view</p>
}
else if (AuthorizedFor(MyNameSpace.Security.Permissions.Client))
{
    <p>This is the Client view</p>
}

您可以将其扩展到更多的角色,只要首先涉及到最强大的角色,用户将始终显示其角色成员身份所允许的最强大的选项。

最新更新