2012-04-21 70 views
4

我有一個應該爲多個客戶端提供服務的WCF服務。WCF使用數據庫驗證客戶端

WCF將有一個數據訪問層將與數據庫進行通信。

這是我的設計理念的一部分:My Design

My Design http://s15.postimage.org/apxri7mw9/Design_Idea.png

正如你所看到的 - 每個客戶端將連接到第一個WCF服務,爲拉動信息(獲得的產品,更新的產品),並且還第二個WCF服務以pub \ sub方式發佈,所以它將能夠接收到關於它想要的不同事物的通知。

我在數據庫中爲'用戶'提供了系統中所有用戶的表格。 (有管理員,普通用戶和技術人員)。

我的問題是 - 我該如何做從客戶端到數據庫的'日誌記錄'?

我現在的想法 - 已經在服務一個函數調用「連接(用戶名,密碼)」,當一個客戶端連接 - 它會通過用戶名和密碼在數據庫中進行身份驗證,並且僅當認證 - 客戶端將開始發送命令。

問題在於 - 任何人都可以編寫自己的客戶端,連接到我的服務並運行其他功能而無需進行身份驗證。我可以通過在服務中保存客戶端是否通過身份驗證來解決此問題。

但是,有沒有更好的解決方案,只是在服務中具有「連接」功能?

希望有一些簡單而有效的東西。

回答

2

您應該創建一個自定義用戶名和密碼驗證器,該驗證器派生自UserNamePasswordValidator抽象類並實現Validate()方法。然後,您可以根據需要驗證提供的用戶名和密碼。要詳細瞭解如何設置,請閱讀this文章。

+0

我們的要求是,客戶端需要輸入用戶名和密碼,服務將根據數據庫進行驗證。這種方法你已經證明了我的好處嗎?客戶在哪裏「接收」從服務器發送給服務的用戶名和密碼? – 2012-04-21 18:13:39

+0

這是自定義驗證的一種方法,所以是的,它適用於存儲在數據庫中的憑據。至於客戶從哪裏「拿」證書,這取決於您的客戶設計。 – Bernard 2012-04-21 19:39:17

+0

謝謝!所以你說可以在客戶端彈出一個窗口,要求他輸入一個用戶名和密碼 - 並且將被髮送到該服務? – 2012-04-22 14:40:45