过滤用户角色的操作并构建菜单

时间:2013-03-22 09:45:58

标签: c# asp.net-mvc razor

我正在为我工​​作的公司建立一个MVC Razor(.Net)网站。然而我仍然是MVC的新手,我只是想知道如何做到这一点。 实际上我有两个问题,但第一个问题更重要。

登录用户存储在viewbag中。 用户具有包含用户角色的emum值(例如:Client,Coach,Admin)。 如何对自定义角色的操作进行过滤,例如

[Roles(Coach,Admin)]    
public ActionResult Index(Somemodel model)
        {
            if (ModelState.IsValid)
            {
                dosomestuff()

        }
        return View();
    }

其次,这只是为了懒惰。 是否可以从过滤器生成菜单项 此外,还提供了菜单项应显示的角色。

示例:

[MenuItem]
[Roles(Coach,Admin)]    
public ActionResult Index(Somemodel model)
        {
            if (ModelState.IsValid)
            {
                dosomestuff()

        }
        return View();
    }

我可以创建一个结构,它将自动显示在某种菜单中,在这种情况下只显示标记为coach或admin的用户。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

  

如何对自定义角色的操作进行过滤,例如

您可以使用将查询角色提供程序的Authorize属性:

[Authorize(Roles = "Coach, Admin")]
public ActionResult Index(Somemodel model)
{
    if (ModelState.IsValid)
    {
        dosomestuff()
    }
    return View();
}
  

是否可以从过滤器生成菜单项

授权过滤器应该用于执行授权而不是构建UI。您可以考虑使用HTML Helpers或Partials生成这些菜单项。在视图中,您始终可以使用以下内容验证用户是否处于给定角色:

@if (User.IsInRole("Coach"))
{
    <li>This menu will be visible only to users in the Coach role</li>
}