我正在为我工作的公司建立一个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的用户。
感谢您的帮助!
答案 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>
}