Ando liado con un proyecto en asp mvc 2.0 y ya sabeis que me gusta compartir lo que voy aprendiendo asi que hoy os voy a proponer aprender a realizar nuestro propio Custom ActionFilter. Un ActionFilter nos permite interceptar la llamada a un action antes de empezar a ejecutar el código de la misma. Esto nos puede servir por ejemplo para reestablecer la cultura de la aplicación o como en el ejemplo que os voy a mostrar forzar a un action de nuestro controlador a ser accesible solo cuando el usuario este autentificado.

Código de nuestro Custom Action Filter
   public class OnlyAuthenticatedFilterAttribute : ActionFilterAttribute
    {
        public OnlyAuthenticatedFilterAttribute()
        {

        }

        public override void OnActionExecuting(ActionExecutingContext ActionContext)
        {
                 if (!ActionContext.HttpContext.User.Identity.IsAuthenticated)
                 {
                     string returnUrl = "~/Login/?ReturnUrl=" + HttpContext.Current.Request.RawUrl;
                     ActionContext.HttpContext.Response.Redirect(returnUrl, true);

                 }

        }
}

Como veis sobreescribimos la función OnActionExecuting que nos permite captura la llamada al action. En ella utilizando el ActionExecutingContext comprobamos si el usuario actual esta autenficado y en caso de no estarlo lo redirigimos a una página de login.

Implementación del Custom Filter en nuestra Action
  [OnlyAuthenticatedFilterAttribute()]
   public ActionResult Index()
   {
         return View();
    }

Espero que este ejemplo os haya sido claro y os sea útil para vuestros proyectos en asp mvc 2. Como siempre para vuestra comodidad os dejo el código en pastebin