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

时间:2013-11-27 19:40:40

标签: asp.net-mvc-3 asp.net-mvc-4 orchardcms orchardcms-1.6 orchardcms-1.7

我想在我看来做这样的事情:

@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>
}

我的权限包括经理和客户,客户有ImpliedBy = new[] { Manager }。 Manager是Admin角色的类型,Client是Contributor角色。

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

然而,这是有道理的,是否可以在不必做任何重大事情的情况下编写代码?我使用自己的前端而不是绑定部件,因此ContentPermission模块不是一个选项。

2 个答案:

答案 0 :(得分:2)

像这样的东西

@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>
    }
}

答案 1 :(得分:1)

按照你的方式行事,但从最强大的角色开始:

@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>
}

您可以将此扩展到更多角色,只要它发挥最强大的作用,用户将始终显示其角色成员资格允许的最强大的选项。