我试着创建一个简单的过滤器,看看用户是否在一个名为“系统管理员”的角色,基本上不得不做[Authorize(Roles = "System Administrator")]
的短手。我认为这将是相当简单的,但我也是相当新的MVC,所以也许我忽略了一些东西。ASP.Net Identity 2 - 为什么我的过滤器不工作?
这里是我的代码:
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
。
谢谢!
可以露出整个类的过滤器? – Aravind
更新后显示全班。谢谢! – ajtatum
这个帖子可能对你更好地理解https://code.msdn.microsoft.com/ASPNET-MVC-5-Security-And-44cbdb97 – bijayk