Cómo se requiere autorización en toda la aplicación ASP .NET MVC

Creo una aplicación en la que cada acción, además de las que permiten el inicio de sesión, debe estar fuera de los límites del usuario no registrado.

¿Debo agregar la anotación [Authorize] antes del título de cada clase? Como aquí:

 namespace WebApplication2.Controllers { [Authorize] public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult About() { ViewBag.Message = "Your application description page."; return View(); } public ActionResult Contact() { ViewBag.Message = "Your contact page."; return View(); } } } 

o hay un atajo para esto? ¿Qué pasa si quiero cambiar las reglas para una única acción en un controlador en particular?

La forma más simple es agregar el atributo Authorize en la configuración del filtro para aplicarlo a cada controlador.

 public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); //Add this line filters.Add(new AuthorizeAttribute()); } } 

Otra forma es hacer que todos sus controladores hereden de una clase base. Esto es algo que hago a menudo ya que casi siempre hay algún código compartido que todos mis controladores pueden usar:

 [Authorize] public abstract class BaseSecuredController : Controller { //Various methods can go here } 

Y ahora, en lugar de heredar de Controller , todos tus controladores deberían heredar esta nueva clase:

 public class MySecureController : BaseSecuredController { } 

Nota: No se olvide de agregar el atributo AllowAnonymous cuando lo necesite para usuarios no iniciados.

Para construir sobre la respuesta de DavidG , si necesita requerir un cierto rol (en la Windows authentication , por ejemplo, donde todos están autorizados) puede hacer esto:

 public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new AuthorizeAttribute { Roles = "MyApp Access" }); } }