这是我CustomAuthorizeAttribute类:为某些Action MVC添加相同的AuthorizeAttribute时,如何覆盖全局AuthorizeAttribute?
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public string ControllerName { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (ControllerName != "pass")
{
// stop or redirect
}
}
}
我把它注册到全局过滤器的所有控制器可以使用:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AdminAuthorizeAttribute());
}
对于一些具体的行动我与帕拉姆ControllerName添加:
[AdminAuthorize(ControllerName="pass")]
public ActionResult Index()
{
return View();
}
但问题是现在在OnAuthorization(),ControllerName总是得到null执行特定的Action时。
难道是因为我不能使用全局的authorizeAttribute和相同的attibute对于一些特定的动作在一起?为什么?我一直认为如果我为特定的Action添加一些AuthorizeAttribute,并将Attribute添加到全局过滤器,则特定的Action将获得高度优先。
UPDATE1:
如果问题来源是2授权的所有执行。那么我怎么覆盖全球授权过滤器当我添加一个相同的AuthorizeAttribute某些行动? (只不同的是帕拉姆,我只是希望它忽略了全球授权当我添加一个对一些行动)
您可以手动更改该属性的Order属性,以使其成为fir先编辑。 – 2014-11-01 13:16:39