一千萬個為什麽

搜索

細粒度的權限; PrincipalPermission - 角色與權限分開;

我一直在wcf服務中使用PrincipalPermission一段時間。 [PrincipalPermission(SecurityAction.Demand,Role = SecurityRoles.CanManageUsers)]

我們的角色前綴為:Can *和我們如何通過內置的asp.net會員系統實現細粒度的動作控制。

這使得我們很難將業務部門知道我們可以為用戶提供哪些細粒度的角色。

這是我的新方法,想看看在實施我的建議之前是否有人可以提供反饋,代碼審查。

1)aspnet_roles - 業務部門角色

2)通過創建權限表和Role_Permission表以及User_Permission表(多對多)來擴展asp.net成員資格系統

3)創建查看新表的自定義CodeAccessSecurityAttribute + [CustomPermissionCheck(Security.Demand,HasPermission =“can *”)] 第一次叠代我將靜態地新建依賴存儲庫..理想情況下,我想要一個具有存儲庫註入的aop樣式屬性IPermissionRepository.HasPermission(...);

如果我接近新的aop方式,我可能會停止從CodeAccessSecurityAttribute繼承 - 安全人員對此有何看法?

有沒有其他人解決這個問題,框架中有什麽東西我錯過了嗎?

最佳答案

我會說如果你在ASP.NET中,那麽你應該實現一個自定義RoleProvider

在自定義RoleProvider中,您將訪問另一個表,該表將業務組鏈接到細粒度權限。

然後,當您找到用戶時,您可以找到他們所在的業務組,並在RoleProvider中分配所有相應的角色,而不是更改您擁有的任何現有代碼。

它也可以更好地工作,因為它允許您輕松更改哪些組具有哪些權限,同時保持域模型的權限純粹在代碼端。

轉載註明原文: 細粒度的權限; PrincipalPermission - 角色與權限分開;