Я хочу заблокировать доступ к странице html (например, /manual/manual_A/index.html) , если определенное условие не выполняется (например, HttpContext.Current.Request.Form ["key"]. ToString() .Equals ("a")), я хочу перенаправить к определенному виду (например./ErrorPage /) else continue (например./Index). В регистре маршрута добавить:Как ограничить доступ к определенным страницам в ASP.NET MVC?
routes.MapRoute(
"ErrorPage",
"errorPage/",
new { controller = "Home", action = "ErrorPage" }
);
routes.MapRoute(
"Path",
"{*_request}",
new { controller = "Home", action = "Index" }
);
для чтения всех просьб. В контроллере Home
[CustomAuthorize]
public ActionResult Index()
{
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if(!condition)
filterContext.Result = RedirectToAction("PageError");
}
OnActionExecuting выполняется на каждом запросе, однако, RedirectToAction не бывает. Любые намеки на то, что я делаю неправильно?
Ваш RedirectToAction и ваши действия маршрутизации не совпадают , вы можете также проверить это (PageError! = ErrorPage) – Tommy
Вы абсолютно уверены, что ваше состояние оценивается как false? Вы можете проверить это под отладчиком? Также помните, что авторизация происходит перед другими фильтрами действий. Если ваш [CustomAuthorize] перехватывает OnAuthorization, вы можете захотеть установить результат из этого фильтра, а не использовать отдельный фильтр действий. – Levi
Привет, я нашел решение своей проблемы. В течение дня поставьте код. Спасибо всем за совет. – user468451