我有一個asp.net 4.0應用程序(客戶端),使ajax/json調用一個http facade,然後將調用傳遞給我們的wcf服務層。表單身份驗證Cookie和WCF
用戶必須使用表單身份驗證在客戶端進行身份驗證。然後這個想法就是認證cookie將被傳遞給http外觀並且可以被訪問。 [基於Dino Esposito的書 - Microsoft ASP.NET和AJAX:架構Web應用程序]的設計
問題是,在外觀上,HttpContext.Current.User.Identity.Name是一個空字符串,而IsAuthenticated是false。
我已經通過添加以下到我的system.ServiceModel節在我的web.config(HTTP門面級別)啓用兼容性:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
我已經裝飾了我的服務有以下:
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Required)]
當我在ajax/facade應用程序中調試時,我可以看到cookie存在於HttpContext.Current.Request.Cookies中。看起來Anonymous正在使用,而不是我的身份驗證用戶。
這兩個應用程序都運行在同一個IIS服務器上。
通過serviceProxy.js調用啓用了AJAX的wcf服務。也許這種方法沒有傳遞必要的cookie?
WCF跟蹤當前顯示'..ASPXANONYMOUS = .....; ASP.NET_SessionId = ....; .ASPXAUTH = .....'在消息日誌中。
我感覺我錯過了一些簡單的東西,但我太接近問題了。
歡迎任何建議。
謝謝利蘭。我欠你一杯啤酒什麼的。我假設每臺機器上都有一臺機器密鑰,並且每個應用程序都沒有什麼不同。他們是兩個分開的應用程序。蒂姆,沒問題, – 2012-07-27 06:19:05
。很高興幫助。通常它們只是自動生成的 - 即使對於單個應用程序也可能會導致麻煩,因爲如果重新部署(即使在同一臺計算機上),Cookie也不匹配。當他們的「記住我」複選框不起作用時,最終可能會導致用戶生氣... – 2012-07-27 15:16:25