【发布时间】:2017-02-10 05:33:07
【问题描述】:
我尝试创建一个简单的过滤器来查看用户是否处于称为“系统管理员”的角色中,基本上是必须执行[Authorize(Roles = "System Administrator")] 的简写。我认为这会相当简单,但我对 MVC 也很陌生,所以也许我忽略了一些东西。
这是我的代码:
using System.Web.Mvc;
namespace site_redesign_web.Filters
{
public class SystemAdminFilter : ActionFilterAttribute
{
string SysAdminRole = "System Administrator";
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.RequestContext.HttpContext.User != null)
{
var userSysAdmin = filterContext.RequestContext.HttpContext.User.IsInRole(SysAdminRole) == true;
filterContext.ActionParameters["IsSysAdmin"] = userSysAdmin;
}
}
}
}
有人可以建议我哪里出错了吗?如果此人不是系统管理员,它会将他们定向到Home/NoPermissions,这将是一个巨大的优势。
谢谢!
【问题讨论】:
-
你能公开你的过滤器的整个类吗?
-
更新为显示整个班级。谢谢!
-
如果你从
AuthorizeAttribute继承自定义过滤器会更容易? -
更新您要在其中实现此逻辑的控制器?
标签: c# asp.net asp.net-mvc asp.net-identity asp.net-mvc-filters