В булевой алгебре отрицание
isDefinedOnAction || isDefinedOnController
есть:
!isDefinedOnAction && !isDefinedOnController
Итак, вы, вероятно, хотите условие &&
:
public override void OnAuthorization(AuthorizationContext filterContext)
{
var isDefinedOnAction = filterContext.ActionDescriptor.IsDefined(typeof(Anon), false);
var isDefinedOnController = filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(Anon), false);
if (!isDefinedOnAction && !isDefinedOnController)
{
... the Anon attribute is not present neither on an action nor on a controller
=> perform your authorization here
}
}
или, если хотите, ||
:
public override void OnAuthorization(AuthorizationContext filterContext)
{
var isDefinedOnAction = filterContext.ActionDescriptor.IsDefined(typeof(Anon), false);
var isDefinedOnController = filterContext.ActionDescriptor.ControllerDescriptor.IsDefined(typeof(Anon), false);
if (isDefinedOnAction || isDefinedOnController)
{
... the attribute is present on either a controller or an action
=> do nothing here
}
else
{
... perform your authorization here
}
}
Очевидно, что первое гораздо более читабельно.