ASP.NET MVC检查用户是否属于[x]组

nat*_*ere 7 authentication asp.net-mvc authorization usergroups

也许我正在以错误的方式接近这个并且应该在动作过滤器中做所有事情,在这种情况下,请指出我正确的方向!

我正在设置我的ASP.NET MVC应用程序,以便一个HomeController Index操作提供两种不同类型的内容,如下所示:

if(Request.IsAuthenticated)
  return View("IndexRegistered");
else
  return View("IndexGuest");
Run Code Online (Sandbox Code Playgroud)

这很好,但是我想把它分成三个,所以管理员会得到他们自己的页面......

if(Request.IsAuthenticated)
{
  if( /* user is a member of administrators */)
    return View("IndexAdministrator");
  else
    return View("IndexCustomer");
}
else
  return View("IndexGuest");
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我这个谜题的遗失吗?

小智 23

使用Roles授权操作筛选器的属性:

[Authorize(Roles="Administrators,Moderators")]
public ActionResult SomeAction(){

}
Run Code Online (Sandbox Code Playgroud)

或者使用User.IsInRole()方法:

if(User.IsInRole("Administrator")) { ... }
Run Code Online (Sandbox Code Playgroud)

  • if(User.IsInRole("Administrator"))正是我所需要的,谢谢!如果有更好的方法可以做到这一点,仍然可以输入.在使用Authorize的第一个例子中,它似乎对我来说是一个更好的方式(虽然我不能真正解释为什么),除非我理解它,它只提供一揽子允许/拒绝条件,而不是多个条件,这是我追求的是什么. (3认同)
  • 如果您在role属性中指定了一个或一百个角色,则无关紧要,该示例仍然只为您提供全局允许或拒绝规则,而不是基于每个指定角色进行切换.第二个例子完成了这项工作. (3认同)