关于设计:
Not*_*tMe 10
最简单的方法如下:
用户:包含用户,名称和ID的列表
SecurityGroups:包含安全组列表,例如"Sales","Marketing".(id,安全组名称)
页面:包含您的页面列表(ID,页面名称)
UserSecurityGroups:(userId,securityGroupId).已分配权利的交叉参考表
PageSecurityGroups :( pageId,securityGroupId,允许).允许访问该页面的安全组成员身份的交叉引用表.
对于每个页面加载,您将检查特定页面的PageSecurityGroups表是否包含用户具有的组访问权限.
显然,可能还有更多内容,例如将页面分配给特定用户,但您可以根据需要对应用程序进行推断.
由于“每个网页通常都是一组网页的一部分......”,最好的表现就好像“每个网页总是一组网页的一部分......” - 即使某些组只会有1名会员!
这将您的数据模型简化为:
用户 ---> 用户组 <--------> 页面组 <--- 页面