对于我正在进行的项目,我需要为用户,几种不同类型的项目以及类似acl的权限系统设计数据库。
基本上,这就是我想做的事情(更复杂,但这足以证明我的意思):
(itemType和itemId是一个复合外键,引用文章或图片,具体取决于item_type)
有人会说使用权限表不是一个好主意,并且通过向文章和图像添加读取,写入和管理列可以实现同样的目的,但请记住,可能有多个用户具有不同的权限项目。放弃它不是一种选择。
在我看来,这样可行。但是当涉及到实现时,我找不到一个php orm给我一些自由来做到这一点。这让我相信我可能会做错事。
所以,我的问题是: 为此实现ACL和设计数据库的正确方法是什么? 如何为企业级应用程序完成? 是否有非db ACL解决方案?
答案 0 :(得分:1)
您只需拥有一个many-to-many
表,该表将绑定用户权限以及可能解决您的窒息点的对象。
它将有 - user_id和permission_id,object_id将引用3个不同的表。
意思是:
user_id(references users),permission_id(references permissions),object_id (references image?)
1 ,2(read),2
1 ,3(write),2
1 , 4(exec),2
希望它有助于升技