我試圖找出落實正確的方式將以下代碼使用德興模式,還是不錯的面向對象的解決方案:設計模式來實現一組權限的用戶
有一個用戶類其中可以包含一組變量許可證,每個許可證都允許他對應用程序執行不同的操作。這個想法是能夠告訴特定的用戶對象,例如刪除一個訂單,如果他有任何允許他這樣做的許可證,那麼做,如果沒有,則引發異常。
如果有人有一個地方在哪裏閱讀這個,它也是有用的。 謝謝
我試圖找出落實正確的方式將以下代碼使用德興模式,還是不錯的面向對象的解決方案:設計模式來實現一組權限的用戶
有一個用戶類其中可以包含一組變量許可證,每個許可證都允許他對應用程序執行不同的操作。這個想法是能夠告訴特定的用戶對象,例如刪除一個訂單,如果他有任何允許他這樣做的許可證,那麼做,如果沒有,則引發異常。
如果有人有一個地方在哪裏閱讀這個,它也是有用的。 謝謝
如果一個用戶可以有多個許可證,每個許可證允許不同的執行任務,那麼你可能想看看裝飾器模式。
雖然它很大程度上取決於您的要求。
在C#/ .NET中有權限內置函數。
函數的訪問需求通過PrincipalPermissionAttribute
類設置,或者在PrincipalPermission
的代碼中設置。爲了防止方法被調用,除非當前用戶是Administrators
角色的成員,以下屬性用於(從MSDN樣品):
[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
static void CheckAdministrator()
{
Console.WriteLine("User is an administrator");
}
這兩種檢查針對調用線程的當前標識。所以你需要做的是實現IPrincipal
接口,以允許你的用戶被設置爲線程標識。然後你可以使用標準的.NET PrincipalPermission
來檢查安全性。它的工作原理就是你想要的 - 如果不滿足安全需求,則拋出異常。
我更喜歡這種類型的以原則爲中心的方法,我建議你再進一步,並創建聲明和/或不確定的權限對象來封裝PrinciplePermission斷言。這將保持原則細節不會泄露到代碼庫的其餘部分。請記住,您不必購買更大型的CAS基礎設施即可使用此模式。一個警告,但WCF安全模型是非常不同的,所以如果這就是你要去的地方忽略。這是一個模式的例子。 http://www.smelser.net/blog/post/2009/03/09/Why-do-I-need-your-Permission.aspx – JoeGeeky
@JoeGeeky這似乎是我在找什麼,但怎麼做我設置了用戶的許可證?另外,這些用戶和用戶組與Windows UAC用戶/用戶組無關? – mbmihura