我们总是在大型系统中使用基于角色的问题。在此类软件中,我们希望超级用户能够设置其组织用户权限。我们可以创建许多原子角色并创建一个控制台来将角色分配给用户。然后我们要创建很多角色,例如:
AddProduct, RemoveProduct, EditProduct, AcceptPurchase, DenayPurchase, ...
这样,对于一个中型系统,我们至少应该有 50 个角色!那么管理员如何为每个用户分配这些角色呢?
乍一看,我们有两个解决方案:
在数据库(例如Group)中创建一个表以放在用户和角色之间。然后管理员应该创建一组角色,然后将一个组分配给多个用户。
将角色用作一组权限。例如,创建一个 PermissionInRoles 表并为每个角色分配权限,然后将角色分配给用户。
我们很快发现第一种方法是胡说八道。我们用第二种方法实施了几个项目。但现在我们想在除 WCF RIA 身份验证服务之外的 sivlerlight 项目中使用它。它只支持角色。例如,每个用户实例都有一个IsInRole方法,我们实现了我们的IsInPermission方法。
对服务使用RequiresRole属性时还有另一个问题。我不能也不想为每个服务方法设置硬编码角色名称。
知道我们对基于角色的安全设计非常困惑!我们如何在这些情况下使用它?