ASP.NET MVC 4 — предотвращение прямого доступа к пользовательским страницам ошибок

Это не позволит мне отправить коды выше, пришлось сделать снимок экрана. Как видно выше, я использую страницы customError для обработки соответствующих ошибок. Все работает так, как ожидалось, например, когда пользователь получает необработанное исключение, на моем локальном URL-адрес меняется, как и ожидалось: http://localhost/SystemAdministration/Error

Однако я не хочу, чтобы пользователи обращались к этой странице, вводя URL-адрес своего браузера. Каков наилучший способ ограничить прямой доступ к этим страницам ошибок и показывать их только при возникновении соответствующей ошибки? Спасибо


person OzanYukruk    schedule 11.12.2013    source источник
comment
Вы можете создать ActionFilter, который проверяет код состояния на что-то отличное от 200. Если это 200, то перенаправьте куда-нибудь еще (возможно, на домашнюю страницу?). Украсьте свои действия на странице ошибок этим вновь созданным фильтром.   -  person Rohrbs    schedule 11.12.2013
comment
Здравствуйте, это похоже на хорошее предложение, но не удалось заставить его работать. Прикрепил новый пользовательский ActionFilter к моему действию NotFound, и в его методе onActionExecuting мой filterContext.RequestContext.HttpContext.Response.StatusCode возвращает 200. Мне нужно каким-то образом получить statusCode до запроса действия NotFound, но как?   -  person OzanYukruk    schedule 11.12.2013


Ответы (1)


Для этого вы можете создать настраиваемый фильтр действий. Это объясняется в Фильтр настраиваемых действий ASP.NET MVC для ограничения прямого доступа к методу действия. Надеюсь это поможет

person user2813261    schedule 15.02.2014