我设计的一个acl模块有4张表,其中一张关联了一张记录用户的表。
//资源表
acl_资源
//字符表
acl_角色
//权限表
acl_权重
//角色对于某个资源有什么样的权限表?
acl_控制
//用户信息表
用户
资源表主要存储模块,如bbs:第1节、第2节……设计包含用户,角色,权限和用户组数据库表结构3D角色,记录这个资源有多少权限。
角色表:存储各种角色:管理员、超级版主、版主、注册用户、访客……
权限表:发帖、回复、删除、修改、移动……
控制表:记录角色x对资源x有x个权限。
用户表:记录用户信息及其所属的角色ID。
尖端。 记录权限信息时,可以使用类似于Linux权限的方法。
例如,发布权限值=1、删除权限值=2、修改权限值=4、移动权限值=8。
如果资源a有删除帖子和移动帖子的权限,记为:1+8=9。 我想反向找出9代表的哪些权限可以用5%权限值=权限值的方法。 即9&1==1有发帖权限,9&2!=2无删除帖子权限设计包含用户,角色,权限和用户组数据库表结构,9&4!=4无修改权限,9&8==8有移动帖子权限。
这样就无需记录字符串 1,8。 存储方便,计算效率高。 但缺点是不能超过你cpu的位数。
在 32 位计算机上音乐,最多有 32 个值,在 64 位计算机上,最多有 64 个值。 但一般来说这已经足够了。