2015-07-10 23 views
0

在我的Silverlight應用程序中,我有15個以上的屏幕。我想要一個權限組「CanOnlySeeTraining」不能訪問除2個之外的所有屏幕。我知道我可以把代碼放在下面,但事情是我必須把這個代碼放在每個和每個屏幕上,除了我希望他們看到的那兩個外。在Silverlight C#中有沒有一種方法可以讓頂部的權限流入屏幕樹(如Windows文件夾權限)?讓我知道你是否需要更多的澄清。謝謝。是否有一種簡單的方法可以將組限制在2個屏幕上?

partial void <ScreenName>_CanRun(ref bool result) 
    { 
     if (this.User.HasPermission(Permissions.CanOnlySeeTraining)) 
     { 
      result = false; 
     } 
     else 
     { 
      result = true; 
     } 
    } 

回答

0

我們不這樣做完全是,但是......我們的應用程序的「活動ID」分配給每個窗口(或批處理過程中,我們有幾個),並啓動在每一個標準部分是檢查用戶的權限組是否有權訪問該活動。我們有一個通用的功能,比較組&活動,以確定是否允許該組合;該函數只是返回一個標誌值,表示啓動是否應該繼續。 全部使用'啓動允許'檢查功能,只有在特別允許的情況下才會繼續。沒有人需要像您的樣本一樣進行任何特定的檢查,他們只需要知道是否允許他們現在繼續。

我們的關係數據保存在數據庫表中,但將它移到文件中是相當簡單的。

我們的實現依賴於繼承來確保檢查函數不會被跳過,只有少數基礎對象(我認爲兩個)實際上具有編碼檢查。

+0

謝謝戴夫。你能詳細說明一下,或者提供關於你如何做的代碼示例?謝謝。 – ray500

+0

我們有一個表定義了受控活動(通常是應用程序屏幕),另一個定義用戶和用戶組的對,一個將用戶鏈接到組的組,以及一個將受控活動與用戶組和權限級別關聯的最終鏈接表,只讀,修改,創建或監督(用於需要審批的工作流程))。有標準代碼可以檢查用戶對活動的權限,並適當地設置屏幕級別的對象權限。如果他們沒有屏幕權限,則不會出現在任何菜單中。 – DaveE

相關問題