2013-03-02 53 views
0

我有一個應用程序使用存儲庫的庫來執行數據庫上的所有操作。這個庫有很多方法,一些用戶有權執行所有的操作,但其他的不是。實體框架,WCF和用戶權限:如何實現它

我有一個客戶端應用程序,如果它安裝在局域網內的計算機上,此客戶端直接使用存儲庫連接到數據庫。這樣,出於性能原因,客戶端不會通過WCF主機。

如果應用程序安裝在局域網外的計算機上,則它通過WCF服務連接,然後使用存儲庫連接到數據庫。

我的問題是如何檢查用戶是否有權執行存儲庫方法

我想到了兩種選擇。一種是當我在存儲庫中創建一個對象時,它在我啓動應用程序時創建,並在關閉應用程序時被銷燬。當我創建存儲庫時,我獲得了所有用戶的所有權限配置,因此我只對數據庫執行一個查詢。但是,如果應用程序非常大或者我有很多用戶,則可能會消耗大量內存,這並不好。

另一個選擇是,對於存儲庫上的每個方法,傳遞兩個附加參數,即用戶和密碼,因此每個方法所做的第一件事是向數據庫查詢權限。這會消耗更少的內存,但會對數據庫進行更多查詢。該查詢非常簡單,但會佔用資源(連接)。

所以我想知道是否有更多的選項來控制權限,或者我的第一個選項是否是一個好的解決方案。

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-03-03 02:50:17

+0

謝謝,在我未來的問題中,我會遵循這個推薦。 – 2013-03-03 08:23:33

回答

1

我的建議是一個密碼或唯一的訪問鍵,這是使用GUID或其他東西的第二選擇。您需要單個持久對象來處理多個請求。創建和銷燬每個連接似乎都沒用。單個對象,多個連接,多個項目的多個鍵。跟蹤對象的所有按鍵。它在資源方面給予和承擔。