2

我正在使用消息/用戶名/自定義MembershipProvider爲我的WCF服務身份驗證。如何在WCF中緩存身份驗證信息?

默認情況下,WCF驗證來自客戶端的每個呼叫。

我的自定義MembershipProvider訪問數據庫用於檢查用戶名/密碼。

因此對於來自客戶端的每個呼叫,服務必須訪問數據庫進行認證,並且隨着呼叫數量的增加,這可能會帶來性能影響。

是否存在一種默認方式來緩存此身份驗證信息(可能是通過創建票並使用該票作爲ASP.NET中的進一步身份驗證)?

回答

1

對於WCF調用,您絕對可以使用ASP.NET Forms Auth,將令牌保存爲隨每個請求一起傳遞的cookie。

+0

我可以看到你可以在WCF中創建一個認證服務,我如何在其他WCF服務上強制執行認證?即強制服務器在用戶嘗試訪問其他WCF服務時檢查cookie中是否存在有效的票證。 – Yeonho 2012-03-06 02:10:49

+0

你甚至不需要使用認證服務。這只是通過WCF服務調用進行登錄。只要您對.SVC文件的URL使用標準ASP.NET授權規則(您可以使用[位置](http://msdn.microsoft.com/zh-cn/library/b6x6shw7)對其進行細化。 aspx)元素),ASP.NET將處理通過這些URL的任何請求的身份驗證。 – Randolpho 2012-03-06 05:20:19

+0

我可以通過使用位置元素來拒絕對這些WCF服務的訪問,但即使在我登錄後,我也無法授予訪問權限,因爲WCF似乎不會爲每個請求發送Cookie信息。我想我可以在登錄後獲取cookie信息並手動添加到每個請求的標題。還有另一種方法可以做到嗎?謝謝。 – Yeonho 2012-03-06 09:00:08