Я хочу написать собственный фильтр, который будет проверять, вошел ли пользователь на мой сайт, и перенаправит его обратно на страницу входа, если это не так.
Я хочу, чтобы фильтр применялся автоматическина страницу при загрузке.
Я пробовал решение, показанное ниже, но фильтр на данный момент не работает.
Код фильтра:
using Microsoft.AspNetCore.Mvc.Filters;
namespace MODS.Filters
{
public class AuthorisationPageFilter : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext context)
{
System.Diagnostics.Debug.Write("Filter Executed"); //write to debugger to test if working
//add real code here
base.OnActionExecuted(context);
}
}
}
Далее, вот атрибут фильтра, примененный к модели страницы:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using MODS.Filters;
namespace MODS.Pages.Menus
{
[AuthorisationPageFilter]
public class Admin_MainMenuModel : PageModel
{
public ActionResult Admin_MainMenu()
{
System.Diagnostics.Debug.Write("Function Executed");
return new ViewResult();
}
}
}
У меня сложилось впечатление, что вам нужно вызвать действие / метод на странице, чтобы функция применялась при загрузке страницы (скажите, пожалуйста,я, если это правильно), так вот код, вызывающий метод Admin_MainMenu
в файле страницы .cshtml (в блоке кода в верхней части страницы бритвы):
Model.Admin_MainMenu();
Мои текущие мыслиэто либо: 1. сам фильтр неправильного типа (может быть IPageFilter
вместо этого?) 2. неправильный способ его реализации (либо когда я применяю его к модели страницы, либо когда я вызываюметод на странице).
любой часЭЛЬП очень ценится.Благодаря.