在尝试为 Web 应用程序实现基于角色的安全性时,我在数据库中有一个表,用于权限、角色、用户和用户角色(即用户对角色的分配)。
每个角色都有一组权限。权限被定义为 C# 标志枚举,其值为 0、1、2、4 等。
在数据库中,角色表有一个 int 字段,用于存储角色的组合权限标志。(这样我们就可以避免使用单独的权限表(这是好还是坏?)和 RolePermissions 的一对多表。
在代码中,我通过计算分配给用户的角色的有效权限来检查用户是否具有访问权限。在 .NET 中,通过对枚举标志执行逻辑操作很容易做到这一点。
所以我的问题是:
这样做有什么缺点吗(与拥有 Permission 表和 RolePermission 链接表(对于授予角色的每个权限包含 1 条记录)相反)?