2013-03-06 69 views
1

由於某些原因,IIS無法識別我的Forms身份驗證Cookie,因此它會一直重定向到登錄頁面。登錄頁面是基於.NET集成的ColdFusion 10。我基本上試圖模仿this MSDN article的「創建表單身份驗證Cookie」部分。IIS窗體身份驗證無法識別Cookie

IIS 7.5身份驗證與這些設置中啓用Forms身份驗證:

  • 登錄網址:/my/login/page.cfm
  • 超時:30
  • 模式:使用cookie
  • 名稱: .CFAUTH
  • 保護:加密
  • 要求SSL:否
  • 延長有效期:是

的代碼基本上是這樣的:

<!--- Authenticating code here... ---> 

<!--- Create .NET Instances ---> 
<cfobject type=".NET" assembly="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.dll" class="System.Web.Security.FormsAuthentication" name="authForm" /> 
<cfobject type=".NET" assembly="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.dll" class="System.Web.Security.FormsAuthenticationTicket" name="authTicket" /> 

<!--- Create Auth Ticket ---> 
<cfset authTicket.init(2, "user.name", Now(), DateAdd("n", 30, Now()), false, "") /> 

<!--- Encrypt the Ticket, Creating Cookie Value ---> 
<cfset authCookie = authForm.Encrypt(authTicket) /> 

<!--- Create the actual Cookie ---> 
<cfcookie name=".CFAUTH" expires="#DateAdd("n", 30, Now())#" value="#authCookie#" /> 

<!--- Redirect Back to Originating URL ---> 
<cflocation url="#URL.ReturnUrl#" /> 

我知道一切與代碼工作正常,因爲cookie 是在瀏覽器中集和我可以Decrypt() cookie值和Get_Name()來檢索正確的用戶名。但是,IIS只是不關心cookie。有什麼想法嗎?我錯過了什麼嗎?感謝您的任何反饋!

+0

好的,我找到了一個應用程序日誌事件,它涉及:「請求的表單身份驗證失敗原因:提供的票證無效。」所以IIS至少在嘗試。我懷疑這與用於加密的計算機密鑰有關,ColdFusion集成和IIS AppPool可能會有所不同。現在我只需要弄清楚如何驗證和匹配它們。 – Panman 2013-03-06 20:14:29

回答

0

再次檢查您的cookies。無論您如何輸入名稱,ColdFusion都會大寫Cookie名稱。另外驗證域。我之前在混合CF和.Net的地方涉及到cookies。我們最終將問題追溯到大寫問題和cookie域。

爲您的瀏覽器抓取cookie插件。這些在查找cookie問題時非常有用。

相關問題