, AuthorizeAttribute. - , AuthorizeAttribute, . ( ) , - , . , , " ". /, - . , , , .
, .
[OverridableAuthorize]
public abstract class ProtectedController : Controller
{
}
public class MostlyProtectedController : ProtectedController
{
public ActionResult ProtectedAction()
{
}
[AnonymousEnabled]
public ActionResult PublicAction()
{
}
}
[AnonymousEnabled]
public class ExplicitlyPublicController : ProtectedController
{
}
public class PublicByOmissionController : Controller
{
}
public class AnonymousEnabledAttribute : Attribute
{
}
public class OverridableAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization( AuthorizationContext context )
{
context.HttpContext.Items["ActionDescriptor"] = context.ActionDescriptor;
base.OnAuthorize( context );
}
public override bool AuthorizeCore( HttpContextBase context )
{
var actionDescriptor = context.Items["ActionDescriptor"] as ActionDescriptor;
if (actionDescriptor == null)
{
throw InvalidOperationException( "ActionDescriptor missing from context" );
}
var attribute = actionDescriptor
.GetCustomAttributes( typeof(AnonymousEnabledAttribute,true)
.FirstOrDefault();
if (attribute == null)
{
return base.AuthorizeCore( context );
}
return true;
}
}