В приложении ASP.NET MVC при использовании пользовательского контейнера внедрения зависимостей (в данном случае Unity) возможно ли перехватить запрос перед вызовом GetControllerInstance
, чтобы определить, произошло ли тайм-аут аутентификации форм?
У меня есть следующее в web.config
:
<authentication mode="Forms">
<forms loginUrl="~/Home/Index" timeout="10" defaultUrl="~/Home/Index"/>
</authentication>
Если я войду на веб-сайт, дождусь истечения времени ожидания, а затем получу доступ к другой странице (ну, действие контроллера), я быожидали, что фреймворк позаботится об автоматическом перенаправлении меня на ~/Home/Index
.Вместо этого он весело пытается создать новый контроллер для обработки запроса, который не выполняется, и я в конечном итоге перенаправляюсь на нашу пользовательскую страницу ошибок.
Глядя на стек вызовов, я думаю, что это должно произойти где-то вокруг MvcHandler.System.Web.IHttpHandler.ProcessRequest
или MvcHandler.ProcessRequest
.. конечно, прежде чем DefaultControllerFactory.CreateController
будет вызван.
Кто-нибудь еще должен был справиться с этой ситуацией?
Обновление: Если честно, ядумаю, что этот подход, вероятно, неверен, и лучшая идея - обработать тайм-аут аутентификации форм на стороне клиента с помощью некоторого JavaScript на главной странице.Затем я мог бы перенаправить на действие, которое очистит сеанс и вернет их на страницу входа, аналогичную , что описано здесь .