Roadmap › ASP.NET MVC 5 (.NET Framework) — Folder Structure, Request Life Cycle and Features › Module: Model Binding, Validation and Filters
Lessons in this course (10)
7. Filters — authentication, authorization, action, result and exception
Intermediate★ Must knowLesson 7 of 10
| Filter (MVC 5) | Interface | Runs | Built-in examples |
|---|---|---|---|
| Authentication | IAuthenticationFilter | First — establishes identity | Custom token checks |
| Authorization | IAuthorizationFilter | Before model binding/action | [Authorize], [AllowAnonymous], [RequireHttps], [ValidateAntiForgeryToken], [ChildActionOnly] |
| Action | IActionFilter | Before/after the action method | [OutputCache] (also result), custom logging/auditing |
| Result | IResultFilter | Before/after the result executes | Modify view data, timing |
| Exception | IExceptionFilter | When an unhandled exception occurs | [HandleError] |
csharp
public class LogActionAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext ctx)
=> Trace.WriteLine($"→ {ctx.ActionDescriptor.ControllerDescriptor.ControllerName}.{ctx.ActionDescriptor.ActionName}");
public override void OnActionExecuted(ActionExecutedContext ctx)
=> Trace.WriteLine($"← done, exception: {ctx.Exception?.Message}");
}
// Registration levels: global (FilterConfig), controller, action
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute()); // shows Views/Shared/Error.cshtml when customErrors is On
filters.Add(new AuthorizeAttribute()); // whole site requires login ([AllowAnonymous] to opt out)
filters.Add(new LogActionAttribute());
}
}Order: authentication → authorization → (model binding) → action filters → action → action filters (after) → result filters → result → result filters (after); exception filters on errors. The Order property and scope (global → controller → action) control ordering.