将安全密钥添加到实体,创建权限表,并将用户与具有实体类型的许可以及具有角色的安全密钥链接。这样,您可以说出类似的话:Admin_role可以访问Student(实体类型)并进行读取(权限中的操作)和Write(操作),而Student_role可以为其自身和Read_permission访问Student_key。您可以通过将地址重构为实体并向其中添加安全密钥来解决该地址。
您的四号可能有一个封闭世界的假设,并说除非您可以担任用户的当前角色,否则将属性名与字典(实体+属性)哈希中的标记链接到flag,即封闭世界的假设默认情况下不允许读取。那么,您当然不会获得任何写权限等。
您可以在数据库中定义视图,并使用数据库身份验证系统为其分配权限。如果您能够自己编写代码,这可能是最干净的方法,这取决于我们是哪个角色来选择要调用的视图。(我以前的RDBMS老师会喜欢我这么说;)这也与Hibernate有所不同,并将您的东西更多地耦合到数据库中。我想这取决于代码的可移动性/可移植性。
围绕通用dao(IRepository)使用一个方面,该方面根据您的权限重写查询。当然,这意味着您在代码中具有基于权限的安全性。
实际上,只有在您首先移植代码权限时,才能在gui中隐藏编辑按钮,例如在我的观点1上。我建议您看一下Ayendes博客以获取对此的开源实现,他是一个非常熟练的人。编码器。



