过滤用户角色的操作并构建菜单
本文关键字:构建 菜单 操作 用户 角色 过滤 | 更新日期: 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>
}