Stack Overflow有一个基于点的权限系统,可以确定网站上的很多内容,例如您可以编辑的内容以及向系统添加新标签的功能。
有什么建议,特别是在架构实施方面,你会给设计这样一个系统的人吗?你在哪里存储权限?如何使用这些权限来确定哪些字段在视图中显示为可编辑?是否有任何好的开源代码示例可以从中学习?
关于对象模型(例如问题或文档)的所有权或共享,在该对象的模型上存储对所有者的引用与在该帐户模型中存储对该对象的引用的优缺点是什么? e.g。
document = { id: 21234,
owner_id: 4d3ca9f1c067,
shared_with: [a50d1e000138, 4d3ca9f1c067a, 50d1e000138] }
VS
user = { id: 4d3ca9f1c067,
documents_owned: [21234, 31452, 12312],
collaborates_on: [23432, 43642, 12314, 23453] }
答案 0 :(得分:1)
将权限存储在单独的模型中作为权限要求的点对。
在视图中,参考上述权限模型,确定登录用户是否有足够的权限显示每个项目。
模型选项:我更喜欢前者,因为(1)它具有更简单,更扁平的结构,因此在列出问题时没有通过用户表的嵌套循环,以及(2)删除文档不需要更新用户对象。 (除非在删除文档时其分数下降等。)