检查UserRole并在布局中设置权限

时间:2013-12-03 07:06:37

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 simplemembership

假设我在布局中有一个actionlink,我想要显示,如果登录用户是“Manager”或“Salesperson”这两个角色中的任何一个,那我该怎么做? 我一直在做的事情如下: -

@if((User.IsInRole("Manager"))||(User.IsInRole("Salesperson")))
{
    @Html.ActionLink("Sales Reports", "SalesReports", "Reports")
}

不幸的是,上面的代码行不起作用。具有角色“Salesperson”的用户看不到“销售报告”链接。 我想使“销售报告”链接仅对“经理”角色或“销售人员”角色的用户可见。请建议如何去做? 谢谢。

2 个答案:

答案 0 :(得分:0)

基于角色的MVC方式是通过对动作或控制器使用[Authorize]属性。然后,您可以按如下方式说出授予的角色:

[Authorize(Roles="Manager,Salesperson")]

您可以创建包含这些操作的部分视图,并根据用户角色显示该视图。

[Authorize(Roles="Manager,Salesperson")]
public ActionResult NavigationLinks()
{
     return View("PATH TO PARTIAL");
}

答案 1 :(得分:0)

应该适用于您的生产线。你可能在“销售人员”一词中犯了错误吗?

我还建议将此逻辑移至控制器:

public ActionResult YourAction()
{
  bool isAllowed = User.IsInRole("Manager")||User.IsInRole("Salesperson");
  ViewBag.isAllowed = isAllowed;

  ...
  return View();
}

比你的观点:

@if((bool)ViewBag.isAllowed)
{
    @Html.ActionLink("Sales Reports", "SalesReports", "Reports")
}
相关问题