В ASP.NET MVC можно написать custom global action filter.
UPDATE:
В соответствии с просьбой в разделе комментариев здесь приведен пример того, как такой фильтр может выглядеть следующим образом:
public class MyActionFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var fooCookie = filterContext.HttpContext.Request.Cookies["foo"];
// TODO: do something with the foo cookie
}
}
Если вы хотите, чтобы выполнить авторизацию на основе стоимости печенья , было бы правильнее реализовать интерфейс IAuthorizationFilter:
public class MyActionFilterAttribute : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
var fooCookie = filterContext.HttpContext.Request.Cookies["foo"];
if (fooCookie == null || fooCookie.Value != "foo bar")
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
}
Если вы хотите, чтобы это действие фильтра для выполнения каждого запроса для каждого действия контроллера вы можете зарегистрировать его в качестве глобального фильтра действия в вашем global.asax в методе RegisterGlobalFilters
:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new MyActionFilterAttribute());
}
И если вам это нужно выполнить только для конкретных действий или контроллеров просто украсить их с этим атрибутом:
[MyActionFilter]
public ActionResult SomeAction()
{
...
}
Может быть, это http://stackoverflow.com/questions/2650269/how-do-i-get-certain-code-to-execute-before- каждый-один-контроллер-action-in-as – V4Vendetta
Вы хотите поместить ActionFilterAttribute на контроллер –
Я бы тоже посмотрите, что делает этот метод, и если он еще нужен в MVC, нет смысла переносить то, что новая технология делает устаревшей. – TheRealTy