我想基于用户角色控制我的操作中的视图。角色存储在数据库中,我已根据有权访问视图的人覆盖我的AuthorizeCore
以返回true或false。我需要知道控制器中的userRole
。
如何确定当前用户的角色?
[Authorize]
public ActionResult Index() {
if (userRole = "Admin") { return View("Admin");}
else {return View("Viewer");
}
假设您的控制器扩展了System.Web.Mvc.Controller
,那么您可以访问基类上的User
属性。这将为经过身份验证的用户提供IPrincipal
实例,其中包括.IsInRole(string role)
:
public ActionResult Index() {
if (User.IsInRole("Admin")) { return View("Admin");}
else {return View("Viewer");
}
注意:如果配置的角色提供程序不自动支持使用.IsInRole
,则可以使用User.Identity.Name
实现自己的数据库查找