Потеря аутентификации с IE8 и MVC FileContentResult - PullRequest
3 голосов
/ 01 августа 2011
  • ASP.NET MVC2
  • .NET 3.5
  • FormsAuthentication
  • URL: domain.com/myapp
  • Проблемная область: создается динамическиPDF-файлы возвращались как FileContentResult

До IE8 все работало нормально.В IE8, когда пользователь открывает PDF-файл и затем возвращается в приложение, он теряет свою аутентификацию.Я добавил срок действия в файл cookie проверки подлинности форм, и проблема оказалась решенной.Однако позже я обнаружил, что та же проблема возникает в родительском приложении.С постоянным cookie-файлом, когда пользователь продолжает работу в моем приложении (domain.com/myapp), все в порядке, но когда он возвращается в окно родительского приложения (domain.com), он теряет свою аутентификацию.Родительское приложение использует проприетарную архитектуру аутентификации и авторизации, основанную на состоянии сеанса.

Итак, мое понимание проблемы заключается в том, что FileSystemResult не несет никакой информации о сеансе и, следовательно, сеанс теряется.Я понимаю, что, добавив срок действия файла cookie, файл cookie сохраняется, и это позволяет авторизации сохраняться в моем приложении, даже когда документы открыты.

Я не совсем понимаю, почему добавление истечения срока действия к моему cookie переместило проблему в родительское приложение. Итак, я ошибался, это происходило все время в родительском приложении.Интересно, что когда я подключил Fiddler, чтобы посмотреть, что происходит, проблема исчезла.

У вас есть предложения, чтобы решить эту проблему?Я не могу думать ни о чем, кроме чего-то действительно уродливого, например, записать файл на сервер и вернуть страницу со ссылкой, чтобы открыть файл напрямую.

На основании этого вопроса Я думаюЯ накрылся.

1 Ответ

1 голос
/ 03 сентября 2011

Существуют некоторые изменения в том, как IE8 обрабатывает постоянные куки-файлы, которые могут быть маршрутом ваших проблем. Здесь есть интересная запись , которая описывает возможное решение.

Решение заняло у нас много времени, чтобы найти в Интернете, хотите верьте, хотите нет, и когда мы нашли это, мы хотели пнуть себя за то, что не нашли это рано. Все это связано с атрибутом домена форм настройки аутентификации в файле web.config вашего приложение. Обычно мы оставляли этот атрибут пустым в наших приложениях, чтобы сделать его проще для развития. Далее, ни один из других браузеров выше заботился об этой настройке и функционировал просто отлично. Однако это изменено в IE8, и теперь этот атрибут обязателен.

...