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

本文关键字:构建 菜单 操作 用户 角色 过滤 | 更新日期: 2023-09-27 18:05:10

我正在为我工作的公司建立一个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();
    }

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

谢谢你的帮助!

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

如何对自定义角色的动作进行筛选,例如

您可以使用Authorize属性,它将查询角色提供者:

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

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

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

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