2010-11-17 41 views
1

我有一個在兩個不同的子域名運行的網站,我們姑且稱之爲問題在IE保護模式asp.net appliation跨域登錄(認證共享)

foo.mydomain.com酒吧.mydomain.com

我想讓用戶在這兩個域之間共享他們的登錄會話。 這就是爲什麼我設置在web.xml

<authentication mode="Forms"> 
      <forms timeout="50000000" loginUrl="~/Login/Login.aspx?redirect=true" domain="mydomain.com"/> 
     </authentication> 

基本上,這工作得很好,但例外:IE瀏覽器保護模式開啓。在這種情況下,註銷不再起作用。 關閉保護模式一切正常。

任何人都可以幫忙嗎?謝謝。

IIS 7/ASP.NET 3.5

回答

0

我想我找到了答案由我自己,問題是以下幾點:

用戶誰登錄之前,我設置域屬性有一個cookie .ASPXAUTH爲域

www.mydomain.com

現在,當用戶使用此cookie時,asp.net沒有將他識別爲已登錄,但登錄後他有兩個.ASPXAUTH cookie設置,一個用於www.mydomain.com,一個用於(新的)cookies .mydomain.com。這可能會混淆ASP.NET並且用戶無法正確登錄。

我的解決方案是手動刪除舊的cookie。由於此cookie設置爲僅限於使用JavaScript的http,但我通過將相同名稱.ASPXAUTH和與舊Cookie相同的域發送過期(將過期日期設置爲昨天)cookie來管理它。後者,我只是把域名屬性留空(然後cookie會自動接收當前的域名,即www.mydomain.com)

有點冗長的故事,但這很漂亮。

0
+0

謝謝,但該鏈接是非常普遍的,並沒有真正有用的在這裏...我實際上不能真正重現我的問題,它刪除瀏覽器緩存後消失 – hugri 2010-11-19 10:47:05

0

一個有趣的事情是,如果你有多個.ASPXAUTH cookie(在同一個域上),你將無法在Request.Cookies中看到它們,但是框架以某種方式知道cookie,並會使用它找到的第一個 - 因此順序也很重要。關於重寫cookie的解決方案僅適用於cookie,如果cookie已經過期 - 這是我的經驗。