2011-11-26 150 views
6

我知道一個cookie可以在使用多個子域共享的設置窗體身份驗證在本地IIS

<forms 
    name=".ASPXAUTH" 
    loginUrl="Login/" 
    protection="Validation" 
    timeout="120" 
    path="/"  
    domain=".mydomain.com"/> 
在Web.config中

。但是如何在本地機器上覆制同樣的東西。我在筆記本電腦上使用Windows 7和IIS 7。所以我有網站localhost.users /爲我的實際網站users.mysite.com localhost.host/爲host.mysite.com和類似。

回答

9

localhost.userslocalhost.host是跨域。 Cookie不能跨域共享。

,這樣子域名不同,但根域你可以這樣配置它保持不變:

  • users.localhost
  • host.localhost

現在設置Cookie域在您的網頁.config至localhost

domain=".localhost" 

並在c:\Windows\System32\drivers\etc\hosts文件中添加下列2項:

127.0.0.1 users.localhost 
127.0.0.1 host.localhost 

現在,您將能夠成功地共享users.localhosthost.localhost之間的身份驗證cookie。

嗯,不要忘了在自動構建過程中採取一步,在生產中發貨之前,您的web.config值將轉換爲正確的根域。

+0

感謝Darin,在Visual Studio中創建這些網站時,如何在IIS中進行設置。 – Parminder

+1

@Parminder,IIS配置問題應該在http://serverfault.com上討論。 –

+0

達林,謝謝,我在那裏問過這個問題,但是在兩個不同的地方問同樣的問題是否有意義。 – Parminder

3

這是對運行在Framework 4.5中並嘗試與框架4和更低級別共享令牌的人的提醒,請注意,這會導致您不會在4個或更低應用程序的任何一個上收到auth cookie。即:如果在你的web.config您有:

<httpRuntime maxRequestLength="80480" targetFramework="4.5" /> 

你可以得到它通過移除targetFramework="4.5"屬性來得到它​​的工作的工作,雖然我不知道是否有任何副作用,這樣做:

<httpRuntime maxRequestLength="80480" /> 
+0

這節省了我在一對使用.NET 4.5.1的網站! –

+0

我無法在子應用程序上進行身份驗證。它在2個web.config文件中與targetFramework =「4.5」一起工作。謝謝 – Troopers