0

我遇到了一项任务,我必须隐藏一些站点地图链接。例如,在此站点地图菜单中:

餐厅

审查餐厅

添加餐厅

事件

创建活动

加入活动

行政

管理用户

管理节点不应显示给所有用户。

我们没有使用正常的 MVC 角色安全模型。我们拥有的是每个控制器开始处的 if 语句。如果用户无权访问,它将用户重定向到另一个页面。这是一个例子:

    public ActionResult Index(string view)
    {
      if (dao.HasPermission(dao.screenLoanDialogue, dao.PermissionsFull) == false)
      return RedirectToAction("AccessDenied", "Home");
      //rest of code here 
    }

如何强制站点地图不显示用户无权访问的节点?我可以尝试的解决方案之一是将所有地图站点传递给控制器​​并让它处理要显示的节点。但我找不到节点的收集位置。

角色和用 HTML 编写页面是没有选择的。

4

1 回答 1

2

用几个方法来创建一个类来为你检查访问权限怎么样?

public static class LinkChecker 
{
    public static bool IsAdminLinkAllowed(User userOrWhatever)
    {
        // stuff here
    }
}

然后在您看来,在呈现链接之前调用它。

@if(LinkChecker.IsAdminLinkAllowed(user))
{
    @Html.ActionLink()
}

或者,您可以(并且可能应该)检查控制器中的访问权限并将值传递给视图。

ViewBag.IsAdminLinkAllowed = LinkChecker.IsAdminLinkAllowed(user);

在视图中:

@if(ViewBag.IsAdminLinkAllowed)
{
    @Html.ActionLink()
}
于 2012-09-26T17:05:46.293 回答