我想在我看来做这样的事情:
@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模块不是一个选项。
答案 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>
}
您可以将此扩展到更多角色,只要它发挥最强大的作用,用户将始终显示其角色成员资格允许的最强大的选项。