0

我正在为我工​​作的公司建立一个 MVC Razor (.Net) 站点。然而我对 MVC 还是很陌生,我只是想知道如何做到这一点。其实我有两个问题,但第一个更重要。

并且登录的用户存储在视图包中。用户的 emum 值包含用户的角色(例如:客户、教练、管理员)。我如何对自定义角色的操作进行过滤,例如

[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();
    }

我可以创建一个结构,这将自动显示在某种菜单中,在这种情况下,只有标记为教练或管理员的用户。

谢谢你们的帮助!

4

1 回答 1

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>
}
于 2013-03-22T09:51:38.513 回答