Возможно, это скорее вопрос ASP.NET MVC, чем вопрос Orchard, но я относительно новичок в обоих случаях, и я не знаю ответа в любом случае.Где я должен помещать код, который я хочу всегда запускать для каждого запроса?
ASP.NET MVC-приложения не имеют технически единой точки входа, поэтому, когда я должен помещать код, который я хочу всегда запускать каждый раз, когда кто-то посещает какую-либо страницу, независимо от уровня или происхождения или разрешений ? Есть ли определенный способ сделать это?
Если это имеет значение, то, что я конкретно пытаюсь сделать в данный момент, это ограничить диапазон IP, который имеет доступ к моему сайту. Я хочу посмотреть каждый входящий запрос и проверить, является ли пользователь аутентифицирован или имеет IP-адрес в разрешенном диапазоне, который я настроил в своих пользовательских настройках.
Я могу придумать некоторые быстрые и грязные способы достижения этой цели, например, поставить отметку Layout
и обернуть условие вокруг всех моих зон или реализовать IThemeSelector
, чтобы переключиться на другую тему, но я хотел бы сделать это правильно.
Это ответило на мой вопрос о том, где разместить такой код. Однако у меня теперь есть проблема, что я не могу перенаправить метод 'OnResultExecuting', если мой чек не работает, потому что« Не удается перенаправить после того, как HTTP-заголовки уже установлены ». Любая идея, если есть способ обойти это? – Lawyerson
Извините, это моя ошибка, пожалуйста, см. Обновленный ответ, следует использовать «IActionFilter», а не «IResultFilter», чтобы поймать запрос перед тем, как обработать действие. – mdameer
Приветствия, все, что я хотел знать и многое другое! – Lawyerson