using System.Collections.Generic;
using System.Web.Routing;
namespace HelloWorldMvcApp
public class HomeController : Controller
public ActionResult Index()
return View(new SampleViewModel() { SomeValue = "Index" });
public ActionResult NotAuthorized()
return View(new SampleViewModel() { SomeValue = "NotAuthorized" });
public class MyActionFilter : ActionFilterAttribute
public override void OnActionExecuting(ActionExecutingContext filterContext)
if (filterContext.HasAttribute(typeof(AllowAnonymousAttribute)))
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
{ "controller", "Home" },
{ "action", "NotAuthorized" }
base.OnActionExecuting(filterContext);
public static class MyExtensionMethods
public static bool HasAttribute(this ActionExecutingContext filterContext, Type attribute)
var actionDesc = filterContext.ActionDescriptor;
var controllerDesc = actionDesc.ControllerDescriptor;
actionDesc.IsDefined(attribute, true) ||
controllerDesc.IsDefined(attribute, true);