Фильтры действий в MVC [Типы фильтров с примерами]

Опубликовано: 2021-03-04

Оглавление

ASP.NET MVC — фильтры действий

В фильтрах MVC (Model-View-Controller) мы используем дополнительную логику в соответствии с различными функциями или логикой обработки запросов MVC Framework.

Фильтры MVC реализуют процесс для разных уровней: например, авторизация, ведение журнала и кэширование.

Мы можем рассматривать фильтр действий как атрибут, который мы можем реализовать в методе действия контроллера, чтобы выполнить модификацию в соответствии с бизнес-логикой.

Мы можем рассмотреть фильтры MVC из системы. Атрибут определяется как класс, метод, свойства и поля.

Читайте также: Проект MVC.

ASP.NET MVC Framework включает различные фильтры действий

Authorize : этот фильтр действий имеет возможность ограничить доступ к определенной роли пользователя.

OutputCache : это фильтр действий, который кэширует результат метода действия контроллера в определенное время.

HandleError : Когда это действие контроллера выполняется, оно обрабатывает ошибки в конкретном сценарии, если код дает сбой. Это позволяет вам создать свой собственный фильтр действий.

Например, мы можем создать пользовательский фильтр действий для выполнения пользовательской системы аутентификации.

Источник

Конвейер фильтрации в потоке жизненного цикла запросов и ответов:

Источник

Фильтр предоставляет две категории реализации логики в коде, он выполняет разные определения интерфейса:

  1. Синхронный
  2. Асинхронный

Синхронные фильтры

В фильтре синхронизации мы можем запускать код до и после конвейера, когда он обрабатывается; мы можем рассматривать его как методы действия OnStageExecuting и OnStageExecuted .

Асинхронные фильтры

Асинхронные фильтры описываются одним методом, в котором есть методы

  • OnActionExecuting
  • OnActionExecuted
  • OnActionExecutionAsync

Фрагменты кода ниже являются типом объявления

открытый класс TimestampFilter: IActionFilter, IAsyncActionFilter

{

public void OnActionExecuting (контекст ActionExecutingContext)

{

context.ActionDescriptor.RouteValues[“timestamp”] = DateTime.Now.ToString();

}

public void OnActionExecuted (контекст ActionExecutedContext)

{

var ts = DateTime.Parse(context.ActionDescriptor. RouteValues[“timestamp”]).AddHours(1).ToString();

context.HttpContext.Response.Headers["X-EXPIRY-TIMESTAMP"] = ts;

}

общедоступная асинхронная задача OnActionExecutionAsync (контекст ActionExecutingContext, затем ActionExecutionDelegate)

{

this.OnActionExecuting (контекст);

var resultContext = ожидание следующего();

this.OnActionExecuted (resultContext);

}

}

Типы фильтров действий в MVC

Платформа ASP.NET MVC поддерживает различные фильтры:

Фильтры авторизации: выполняет атрибут IAuthorisationFilter.

Фильтры действий: выполняет атрибут IActionFilter.

Фильтры результатов : выполните атрибут IResultFilter.

Фильтры исключений: выполняет атрибут IExceptionFilter.

Фильтры авторизации

Мы можем использовать его для доступности пользователя, и мы можем объявить его перед реализацией метода действия в контроллере.

Фильтр авторизации включает два встроенных атрибута, например: Authorize и AllowAnonymous.

Мы можем использовать их в пользовательской логике в коде в соответствии с нашими бизнес-требованиями.

Фрагмент кода ниже является примером фильтров авторизации.

[Авторизоваться]

общедоступный безопасный метод ActionResult()

{

вернуть вид();

}

[Разрешить анонимно]

общедоступный ActionResult NonSecureMethod()

{

вернуть вид();

}

общедоступный безопасный метод ActionResult()

{

вернуть вид();

}

Фильтры действий

Мы можем описать фильтры действий до выполнения метода действия и после метода действия.

Он содержит два типа методов.

  1. OnActionExecuted
  2. OnActionExecuting

Фрагмент кода ниже является примером фильтров действий.

с помощью системы;

используя System.Collections.Generic;

с помощью System.Linq;

с помощью System.Web;

используя System.Web.Mvc;

пространство имен TutorialActionFilter.Filters

{

открытый класс Myactionfilter: FilterAttribute, IActionFilter

{

public void OnActionExecuted (ActionExecutedContext filterContext)

{

если (filterContext.HttpContext.Session["UserID"] != null)

{

filterContext.Result = newRedirectResult("/Home/Index");

}

еще

{

filterContext.Result = newRedirectResult("/Логин/Логин");

}

}

public void OnActionExecuting (ActionExecutingContext filterContext)

{

если (filterContext.HttpContext.Session["UserID"] != null)

{

filterContext.Result = newRedirectResult("/Home/Index");

}

еще

{

filterContext.Result = newRedirectResult("/Логин/Логин");

}

}

}

}

[УчебникДействиеФильтр]

[AcceptVerbs(HttpVerbs.Get)]

публичный результат действия GetPerson()

{

Человек р = новый человек ();

вернуть представление («Человек», р);

}

Фильтры результатов

Мы можем описать фильтры действий до выполнения метода действия и после выполнения метода действия.

Он содержит два типа методов.

  1. OnResultExecuted
  2. OnResultExecuting

Фрагмент кода ниже является примером фильтров результатов.

с помощью системы;

используя System.Collections.Generic;

с помощью System.Linq;

с помощью System.Web;

используя System.Web.Mvc;

пространство имен ResultFilter.Filters

{

открытый класс MyResultfilter: FilterAttribute, IResultFilter

{

public void OnResultExecuted (ResultExecutedContext filterContext)

{

если (filterContext.HttpContext.Session["UserID"] != null)

{

filterContext.Result = newRedirectResult("/Home/Contact");

}

еще

{

filterContext.Result = newRedirectResult("/Логин/Логин");

}

}

public void OnResultExecuting (ResultExecutingContext filterContext)

{

если (filterContext.HttpContext.Session["UserID"] != null)

{

filterContext.Result = newRedirectResult("/Home/Contact");

}

еще

{

filterContext.Result = newRedirectResult("/Логин/Логин");

}

}

}

}

[Мойрезультатфильтр]

[AcceptVerbs(HttpVerbs.Get)]

публичный результат действия GetPerson()

{

Человек р = новый Человек ();

вернуть представление («Человек», р);

}

Фильтры исключений

Мы можем использовать их, когда контроллер или метод действия выдает исключение.

Этот фильтр исключений важен для перехвата исключения.

Ниже приведен фрагмент кода для использования фильтров исключений.

с помощью системы;

используя System.Collections.Generic;

с помощью System.Linq;

с помощью System.Web;

используя System.Web.Mvc;

пространство имен ExceptionFilter.Filters

{

открытый класс MyExceptionFilter : FilterAttribute, IExceptionFilter

{

public void OnException (ExceptionContext filterContext)

{

filterContext.Controller.ViewBag.onExceptionError = «Вызван фильтр ExceptionFilter»;

filterContext.HttpContext.Response.Write("Вызван фильтр ExceptionFilter");

}

}

}

[MyExceptionFilter]

открытый класс HomeController : Контроллер

{

[AcceptVerbs(HttpVerbs.Get)]

публичный результат действия GetPerson()

{

Человек р = новый Человек ();

вернуть представление («Человек», р);

}

}

Читайте также: Проект Java MVC

Изучайте онлайн-курсы по программному обеспечению от лучших университетов мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Заключение

Мы надеемся, что эта статья помогла вам понять фильтры действий в MVC.

Если вам интересно узнать больше о разработке полного стека, ознакомьтесь с программой Executive PG upGrad и IIIT-B по разработке программного обеспечения с полным стеком, которая предназначена для работающих профессионалов и предлагает более 500 часов тщательного обучения, более 9 проектов и задания, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Что такое структуры данных в программировании?

Структуры данных — это то, как мы упорядочиваем данные в программе. Двумя наиболее важными структурами данных являются массивы и связанные списки. Массивы — самая знакомая структура данных, и ее проще всего понять. Массивы в основном представляют собой пронумерованные списки связанных элементов. Они просты для понимания и использования, но не очень эффективны при работе с большими объемами данных. Связанные списки более сложны, но они могут быть очень эффективными при правильном использовании. Это хороший выбор, когда вам нужно добавить или удалить элементы в середине большого списка или когда вам нужно искать элементы в большом списке.

В чем разница между связанным списком и массивом?

В массивах индекс используется для доступа к элементу. Элементы в массиве организованы в последовательном порядке, что упрощает доступ к элементам и их изменение, если используется индекс. Массив также имеет фиксированный размер. Элементы выделяются в момент его создания. В связанном списке для доступа к элементу используется указатель. Элементы связанного списка не обязательно хранятся в последовательном порядке. Связанный список имеет неизвестный размер, поскольку он может содержать узлы во время своего создания. Указатель используется для доступа к элементу, поэтому выделение памяти упрощается.

Что такое указатель в C?

Указатель — это тип данных в C, который хранит адрес любой переменной или функции. Обычно он используется как ссылка на другую ячейку памяти. Указатель может содержать адрес памяти массива, структуры, функции или любого другого типа. C использует указатели для передачи значений и получения значений от функций. Указатели используются для динамического выделения памяти.