2011-08-01 55 views
3
  • ASP.NET MVC2
  • .NET 3.5
  • FormsAuthentication
  • 網址驗證損失動態創建的PDF返回FileContentResult

一切工作正常,直到IE8。使用IE8時,當用戶打開PDF然後返回到應用程序時,他已經失去了身份驗證。我在表單auth cookie上添加了過期時間,問題似乎已解決。但是,後來我發現在父應用程序中出現了同樣的問題。使用持久cookie時,當用戶在我的應用程序(domain.com/myapp)中繼續時,一切都很好,但是當他返回到父應用程序(domain.com)窗口時,他已經失去了身份驗證。父應用程序使用依賴會話狀態的專有身份驗證和授權體系結構。與IE8和MVC FileContentResult

所以我對這個問題的理解是,FileSystemResult不帶任何會話信息,因此會話丟失。我明白,通過爲cookie添加過期時間,cookie會持久存在,並使授權可以保留在我的應用中,即使文檔已打開。

我不明白爲什麼在我的cookie中添加到期將問題轉移到父應用程序。 所以,我錯了,這一直髮生在父母身上。有趣的是,當我連接Fiddler來觀察發生了什麼事情時,問題就消失了。

您有解決此問題的建議嗎?除了將文件寫入服務器和使用鏈接返回頁面以直接打開文件之外,我無法想象除了非常難看的東西外。

基於this question我覺得我被洗腦了。

+0

用戶如何返回到應用程序?返回鍵?關閉PDF查看器? –

+0

@Shiraz:窗戶保持打開狀態。 PDF下載提供了一個Open-Save-Cancel下載對話框。 – Leslie

+0

@Shiraz:另外,父應用程序會在新窗口中打開子女 – Leslie

回答

1

IE8處理持久性cookie的方式有些變化,這可能是您問題的路線。這裏有一個有趣的post描述了一個可能的解決方案。

解決方案花了我們很長一段時間在網上找到相信與否, ,當我們發現我們想踢自己不發現它 越快。這一切都源於 應用程序的web.config文件中 認證設置的域屬性。我們通常會將該屬性留在我們的應用程序中,使其更易於開發。此外,上述其他瀏覽器均不在意該設置,並且運行良好。但是,那個 在IE8中已更改,現在該屬性是必需的。

+0

感謝您的這些信息。它解釋了爲什麼有些用戶登錄的問題已由IT人員更改瀏覽器安全設置解決。不幸的是,它不會改變父應用中的行爲 - 在我的應用中查看PDF後,用戶仍然從父節點退出。如果他們沒有查看任何PDF文件,他們可以繼續在父文件中再次登錄。 – Leslie

+0

嘗試關閉PDF子應用程序中的會話狀態。如果父實施是專有的,很難知道發生了什麼。點擊鏈接,使用小提琴來監控cookies。這是否打開了「自我」?它在同一個域上嗎? – TheCodeKing