Ограничение Доступа к Методу Действия в ASP.NET Core MVC. Начало
Рассмотрим несколько вариантов ограничения доступа к определённому методу действия (или ко всем методам) в контроллере ASP.NET Core MVC.
Мы всегда должны добавлять поддержку аутентификации (кто пользователь) и авторизации (что он может делать) в конвейер ASP.NET Core. Авторизация требует аутентификации, но аутентификация может существовать и сама по себе в определённых схемах аутентификации:
builder.Services.AddAuthentication()
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme);
builder.Services.AddAuthorization();
Использование фильтров
Фильтры ASP.NET Core хорошо известны и популярны, и, пожалуй, это самый простой способ ограничить доступ к конечной точке. Фильтры можно применять:
- через атрибут, к методу действия или контроллеру,
- глобально для всех контроллеров и действий.
Пользовательские фильтры
IAuthorizationFilter (IAsyncAuthorizationFilter) — интерфейс, определяющий правила авторизации для данной конечной точки. Его можно реализовать с помощью атрибута, который затем применить к методу действия, классу контроллера или глобально ко всем запросам:[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public class DayOfWeekFilterAttribute(
params DayOfWeek[] daysOfWeek)
: Attribute, IAsyncAuthorizationFilter
{
public Task OnAuthorizationAsync(
AuthorizationFilterContext context)
{
if (!(daysOfWeek ?? [])
.Contains(DateTime.Today.DayOfWeek))
context.Result = new ForbidResult();
return Task.CompletedTask;
}
}
Использование:
[DaysOfWeek(DayOfWeek.Saturday, DayOfWeek.Sunday)]
public IActionResult Index() { … }
Возврат результата осуществляется через свойство Result объекта AuthorizationFilterContext:
-
ForbidResult: HTTP 403 Forbidden;-
RedirectResult, RedirectToActionResult, RedirectToPageResult, RedirectToRouteResult, LocalRedirectResult: различные виды перенаправлений (HTTP 3xx);-
EmptyResult: ничего с кодом 200 OK;-
StatusCodeResult: пользовательский код статуса.Продолжение следует…
Источник: https://developmentwithadot.blogspot.com/2025/10/restricting-access-to-action-method-in.html