Фильтры действий в MVC [Типы фильтров с примерами]
Опубликовано: 2021-03-04Оглавление
ASP.NET MVC — фильтры действий
В фильтрах MVC (Model-View-Controller) мы используем дополнительную логику в соответствии с различными функциями или логикой обработки запросов MVC Framework.
Фильтры MVC реализуют процесс для разных уровней: например, авторизация, ведение журнала и кэширование.
Мы можем рассматривать фильтр действий как атрибут, который мы можем реализовать в методе действия контроллера, чтобы выполнить модификацию в соответствии с бизнес-логикой.
Мы можем рассмотреть фильтры MVC из системы. Атрибут определяется как класс, метод, свойства и поля.
Читайте также: Проект MVC.
ASP.NET MVC Framework включает различные фильтры действий
Authorize : этот фильтр действий имеет возможность ограничить доступ к определенной роли пользователя.
OutputCache : это фильтр действий, который кэширует результат метода действия контроллера в определенное время.
HandleError : Когда это действие контроллера выполняется, оно обрабатывает ошибки в конкретном сценарии, если код дает сбой. Это позволяет вам создать свой собственный фильтр действий.
Например, мы можем создать пользовательский фильтр действий для выполнения пользовательской системы аутентификации.
Источник
Конвейер фильтрации в потоке жизненного цикла запросов и ответов:
Источник
Фильтр предоставляет две категории реализации логики в коде, он выполняет разные определения интерфейса:
- Синхронный
- Асинхронный
Синхронные фильтры
В фильтре синхронизации мы можем запускать код до и после конвейера, когда он обрабатывается; мы можем рассматривать его как методы действия 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()
{
вернуть вид();
}
Фильтры действий
Мы можем описать фильтры действий до выполнения метода действия и после метода действия.
Он содержит два типа методов.
- OnActionExecuted
- 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()
{
Человек р = новый человек ();
вернуть представление («Человек», р);
}
Фильтры результатов
Мы можем описать фильтры действий до выполнения метода действия и после выполнения метода действия.
Он содержит два типа методов.
- OnResultExecuted
- 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 использует указатели для передачи значений и получения значений от функций. Указатели используются для динамического выделения памяти.