Для контекста у меня в web.config установлено значение времени ожидания для проверки подлинности с помощью форм, и я использую ASP.NET MVC 1. Я думаю, что было бы проще всего сформулировать мою проблему в виде двух вариантов использования - первое, что происходит без тайм-аута аутентификации, и второе, что происходит с тайм-аутом аутентификации:
Нормальный случай:
Пользователь входит в приложение, и таймер аутентификации начинает тикать. Пока период аутентификации остается в силе, пользователь щелкает что-то на странице, что вызывает вызов AJAX (через jQuery). Мы попадаем на сервер, обрабатываем запрос и возвращаем пользователю частичное представление (как ActionResult
). Html проходит как строка в методе успеха ajax, и я беру этот html и вставляю его в div на странице. Это все ожидаемо.
Тайм-аут:
Пользователь входит в приложение, и таймер аутентификации начинает тикать. По истечении времени x срок аутентификации истекает. По истечении времени истечения пользователь нажимает на странице что-то, что вызывает вызов AJAX (с использованием jQuery). Мы попали на сервер, но срок аутентификации истек. .NET автоматически перенаправляет на значение loginURL
, определенное в том же элементе web.config, который устанавливает период ожидания. Для меня эта страница является страницей входа в систему, где пользователю предлагается ввести имя пользователя / пароль для входа в систему. Таким образом, выполняется действие Home/Login
Controller и, в конечном итоге, возвращается полный (не частичный) просмотр обратно в виде строки html в Метод успеха Аякса. Это заставляет страницу бомбить, потому что я пытаюсь взять html полной страницы (с тегами <html>
и всем) и вставить его в div на странице.
Так в этом и заключается моя проблема. Когда срок аутентификации истек, и .NET перенаправляет меня на страницу входа в систему, я возвращаю полный HTML-код страницы в метод успеха ajax. Конечно, все работает нормально, когда попадание на сервер не является вызовом AJAX - оно прекрасно перенаправляется на страницу входа. Но как я могу справиться с этим делом? У кого-нибудь есть идеи?
Спасибо.